This is a tutorial on the Python JSON Library.
What is JSON?
JSON or JavaScript Object Notation has quickly become the new standard for information exchange, commonly used in transferring data across the internet. It’s ease of use and simplicity are signifcant factors in it’s massive popularity.
JSON was derived from the programming language JavaScript. Luckily for us JSON is language independent, so there isn’t any need to know anything about JavaScript beforehand.
In this tutorial we’ll be explaining how to read,parse and (pretty) print JSON data in Python using the JSON library. The JSON library comes bundled with Python natively, so you don’t have to download it separately.
JSON data
Below is a sample of some JSON data. You’ll notice that it has many similarities to Python’s dictionaries and Lists.
{
"Name": "John Hubbard",
"Mobile": 1322489439,
"Married": true,
"Pets": [
"Dog",
"cat"
],
"Address": {
"Permanent address": "USA",
"current Address": "AU"
}
}
We’ll be using this sample data in the upcoming examples when required.
Python to JSON
In this section we’ll be explaining how convert data in Python into JSON. We’ll be doing this with the help of the json.dumps
and json.dump
functions.
json.dump
The json.dump
function is used to write JSON data to a file to be saved in a certain location, like your local storage (hard drive). The below example saves the python data in the variable data
into the file called file.json
in a JSON format.
with open("file.json", "w") as write_file:
json.dump(data, write_file)
json.dump
takes two parameters, a variable holding the data be converted and the file object which the JSON data is to be written to.
json.dumps
The json.dumps function is similar to json.dump, with the exception that it converts and creates JSON data, but does not save it into a file.
json.dumps(data)
json.dumps
takes a single parameters, data
and returns the JSON equivalent.
The below table shows you the conversion equivalents when converting from Python to JSON.
Python | JSON equivalent |
---|---|
dict | Object |
list | Array |
tuple | Array |
str | String |
int | Number |
float | Number |
True | true |
False | false |
None | null |
Pretty printing JSON
While there is a dedicated library in Python for pretty printing, the JSON module has it’s own features that allow us to “pretty” print JSON data in a neat and tidy manner.
json.dumps(data, indent = n, sort_keys = boolean)
The indent
parameter decides how many spaces to leave at appropriate sections in the output. sort_keys
determines whether the keys should be sorted (alphabetically) or not.
The indent
and sort_keys
work on both json.dumps and json.dump functions. Just be sure to add them at the end of the pre-existing parameters, not before.
Below is what the output would look if we just used json.dumps(data)
.
{"Name": "John Hubbard", "Mobile": 1322489439, "Married": true, "Pets": ["Dog", "cat"], "Address": {"Permanent address": "USA", "current Address": "AU"}}
In the example below, we’re going to utilize both the indent
and sort_keys
parameters to make our JSON output look better.
data = {
"Name": "John Hubbard",
"Mobile": 1322489439,
"Married": True,
"Pets": ["Dog", "cat"],
"Address": {
"Permanent address": "USA",
"current Address": "AU"
}
}
print(json.dumps(data, indent=4, sort_keys=True))
The output:
{
"Address": {
"Permanent address": "USA",
"current Address": "AU"
},
"Married": true,
"Mobile": 1322489439,
"Name": "John Hubbard",
"Pets": [
"Dog",
"cat"
]
}
For the indent value, I suggest using values from a range of 3 to 5. Any more or less would not look very presentable.
You can learn more about pretty printing in JSON in a separate dedication tutorial we have.
JSON to Python
In this section we’ll be focusing on how to convert JSON data into Python data. We’ll be using the json.load
and json.loads
to achieve this task.
Once you’ve downloaded/imported JSON data from whatever source you were using, it’s time to bring it into your python program to use. Before we begin using it though, we’ll have to convert it into a Python format using one of the two functions we mentioned earlier.
Keep in mind that whenever the load function is used, a Python dictionary is returned.
Once you have the data converted, you can then use regular Python methods to retrieve and sort through the data.
json.loads
In the example below, once we’ve converted the data and have returned a Python dictionary, we use the standard keys to return their respective values. Also notice that there can be dictionaries within dictionaries in the JSON and Python data.
import json
data = ''' {
"Address": {
"Permanent Address": "USA",
"current Address": "AU"
},
"Married": true,
"Mobile": 1322489439,
"Name": "John Hubbard",
"Pets": [
"Dog",
"cat"
]
} '''
info = json.loads(data)
print(info["Address"])
print(info["Address"]["Permanent Address"])
print(info["Name"])
{'Permanent Address': 'USA', 'current Address': 'AU'}
USA
John Hubbard
json.load
The json.load
is used to “load” the data from a JSON file into the Python program. It takes a single parameter, which is the file object to be read from.
with open("file.json", "w") as read_file:
data = json.load(read_file)
The JSON data is now loaded into the variable called data
.
The below table shows you the conversion equivalents when converting from JSON to Python.
JSON | Python |
---|---|
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
This marks the end of the Python JSON Library Tutorial. Any suggestions or contributions for CodersLegacy are more than welcome. Questions regarding the article content can be asked in the comments section below.