How to Parse JSON in Python

Wondering how to parse JSON in Python? You’re not alone. This guide makes reading, writing, and parsing a piece of code, errr — cake.

In this quick guide, we go through the basics of parsing in python, explain what is JSON, and how to use them both to get the data you need.

What is parsing?

Parsing is the process of converting a sequence of characters into an abstract syntax tree. The parser then uses this tree to perform various operations on the input, such as checking for syntactic correctness or determining if there are any errors in the input.

JSON Parsing from Scratch in Haskell | abhinavsarkar.net

The most common type of parser is called a lexer, which converts sequences of characters into tokens (or “lexemes”). A token can be anything that has meaning to your language: it could be an identifier, a literal string like “hello,” or even something more complex like a function call. 

After you’ve converted all the lexemes into tokens, you need to decide what should happen with them once your program processes them. This decision depends on how your language works. Some languages have no concept of functions; others might use recursion and higher-order functions; others might use closures or anonymous namespaces, etc. 

You’ll also want to ensure that each token doesn’t contain more than one character so that you don’t accidentally create infinite loops during parsing.

What is JSON?

JavaScript Object Notation is a lightweight data-interchange format that describes objects – via attribute/value pairs – for data storage or transport. For example, let’s say you have a glossary on your website. JSON uses a string to define it. 

"title" : "example glossary"

What are the main types of JSON files?

There are two main types of JSON files: object and Array. Object is a simple way to store any kind of data, while Array is used for storing objects that contain other objects. 

What are the benefits of using JSON?

The main benefit of using JSON over XML or other formats like CSV or HTML is that you don’t have to worry about any special parsing code in your application. When using JSON, you must include the file containing your data in the correct place on your page, then read from there. This means that no matter what kind of device someone uses to view your site — they always get exactly what you intend to get.  

What is Python?

Python is a general-purpose programming language that you can use for many different types of projects. It’s easy to learn and has a wealth of libraries available to make your life easier.  

Python also has an active community around it, which means there are plenty of resources online to help you get started.

What is a string? 

A string is a sequence of characters. Characters are symbols, like letters or numbers. So, technically, this sentence is a string

But computers don’t read characters or symbols. They only read 1s and 0son and off, either or; in other words — binary

Even though you see characters on the computer screen — behind the scenes — computers are converting or encoding the characters into 1s and 0s. The reverse of this process (binary into characters) is called decoding. 

Simply put, a Python string is a sequence of characters that convert human commands into the binary language that computers understand. 

What are modules in Python? 

Modules break down large programs into small manageable, organized files. In Python, they refer to files containing Python statements and definitions. A file containing Python code such as example.py, for example, is a module. Its module name would be ‘example.’ 

How to parse JSON in Python.

You can use Python’s JSON module to work with JSON (string or file containing JSON object). It will help if you import the module before you use it.

Import json

The JSON module makes it easy to parse JSON strings and files containing JSON objects.

There are many ways to parse the same information from a string formatted with JSON object notation (or any other form). 

The simplest way is using the built-in function ‘json.’ It accepts an optional parameter called ‘indent’ that specifies how much indentation to use when parsing the input data. 

If it is None, then there will be no indentation. Otherwise, it will add at least one space before each new line of code. 

This approach works well for simple cases where you want to extract only one value from a list of values or one key/value pair from a dictionary structure. 

But what if you need to extract multiple values from the same structure or want to parse a JSON string into a Python dictionary that contains nested structures? In such cases, it is better to use the ‘json.loads’ method.

json.loads method

import json

person = '{"name": "Steve", "languages": ["English", "French"]}'
person_dict = json.loads(person)

# Output: {'name': 'Steve', 'languages': ['English', 'French']}
print( person_dict)

# Output: ['English', 'French']
print(person_dict['languages'])

Here, ‘person’ is a JSON string, and person_dict is a dictionary.

This will return all keys and values in the input data as dictionaries. If no keys exist, then None will be returned for that key/value pair. The value associated with each key/value pair is determined by looking up its dictionary entry with its name.

Python read JSON file

You can use the json.load method to read a file containing a JSON object.

{"name": "Steve", 
"languages": ["English", "French"]
}

Here’s how you can parse this file:

import json

with open('path_to_file/person.json', 'r') as f:
data = json.load(f)

# Output: {'name': 'Steve', 'languages': ['English', 'French']}
print(data)

Convert Python to JSON string

You can convert a dictionary to JSON string using json.dumps method.

import json

person_dict = {'name': 'Bob',
'age': 12,
'children': None
}
person_json = json.dumps(person_dict)

# Output: {"name": "Bob", "age": 12, "children": null}
print(person_json)

Writing JSON to a file 

To write JSON to a file in Python, we can use the json.dump() method.

import json

person_dict = {"name": "Steve",
"languages": ["English", "French"],
"married": False,
"age": 33
}

with open('person.txt', 'w') as json_file:
  json.dump(person_dict, json_file)

In the above program, we have opened a file named person.txt in writing mode using ‘w.’ If the file doesn’t already exist, it will create one. Then, json.dump transforms person_dict to a JSON string which saves in the person.txt file.

When you run the program, it creates the person.txt file. The file has the following text inside it.

{"name": "Steve", "languages": ["English", "French"], "married": false, "age": 33} 

Python Pretty Print JSON

To analyze and debug JSON data, we may need to print it in a more readable format. You can do this by passing additional parameters indent and sort_keys to json.dumps and the json.dump method.

import json

person_string = '{"name": "Bob", "languages": "English", "numbers": [2, 1.6, null]}'

# Getting dictionary
person_dict = json.loads(person_string)

# Pretty Printing JSON string back
print(json.dumps(person_dict, indent = 4, sort_keys=True))

When you run the program, the output will be:

{
    "languages": "English",
    "name": "Bob",
    "numbers": [
        2,
        1.6,
        null
    ]
}

In the above program, we have used four spaces for indentation with the keys sorted in ascending order.

By the way, the default value of indent is None, and the default value of sort_keys is False. 

If this seems a little over your head, we have a fantastic and easy-to-understand Introduction to Web Scraping. If it’s rotating residential proxies you’re looking for to ensure a smooth data collection operation, contact our team for details or explore our inclusive monthly packages.

FAQs.

Who created JSON?

Douglas Crockford created it in 1999 as an alternative to XML.

What is a syntax tree?

A syntax tree visually displays of language structure. It breaks down language into parts of a sentence, generally ignoring the context.

How to read a local JSON file in Python?

First, import json module and then open the file using the name of the json file with the open() function. Next, read the json file using load() and put the json data into a variable.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments