Working with JSON in Python
Python is an Object-Oriented high-level language. Python is designed to be highly beginner-friendly. Python has an English-like syntax, which is very easy to read. In this article, we are going to discuss how to handle JSON files with Python. We will also learn what JSON is and what is the use of it?
JSON stands for JavaScript Object Notation. JSON is a popular format to represent the data and has become very popular for information exchange. JSON is a file that contains data. APIs use JSON to send the response from web servers. JSON can easily capture complex data relationships like nesting etc. The JSON structure is very similar to Python dictionaries which have key-value pairs where the key is a string, and value can be anything like string, integers, Booleans, etc. Below is an example of JSON data:
{
"students":[
{
"name":"Javed",
"id":"01",
"class":"fifth",
"subjects":["Maths","Science","Political Science"]
},
{"name":"Ravi",
"id":"14",
"class":"tenth",
"subjects":["Maths","Physics","Chemistry","Biology","Political Science"]
}
]
}
JSON was created to provide communication between a real-time server and a browser. JSON can be considered as an alternative for XML to deal with data.
JSON is considered to be the most used data format now. Yahoo was one of the first companies to use JSON officially. JSON is in use because of these reasons:
- It is simple to read, write and understand.
- JSON is very fast.
- Almost all the browsers and languages support JSON in development.
Serializing JSON
Serialization refers to the process of converting the data to JSON objects. In serialization, a string of data is transferred into a series of bytes. When a computer got loads of information, then it needs to dump that information. In Python, we can do that with the help of an in-built library in Python called json. Python provides an in-built library called json to read and write the JSON files. We need to import the package to use it. We can use the methods like dump() and dumps() to write the data to files.
Reference the table below:
Python | JSON |
dict | object |
list, tuple | array |
str | string |
int, long, float | numbers |
True | true |
False | false |
None | null |
Writing Data in JSON
To write the data in JSON format in a file, Python provides the dump() method. The dump() method takes two mandatory parameters. First is the JSON object we want to write, and second is the path to the file on which we want to write the json object.
Suppose the JSON object we want to write is this:
Marks = {
"name":[
{ "Rahul":
{"Maths":"95",
"Physics":"88",
"Chemistry":"88"}},
{ "Raj":
{"Maths":"70",
"Physics":"94",
"Chemistry":"90"}}
]
}
To save this data into the disk, we need to write it in a file. Below is the code for that:
with open("marks.json", "w") asfile:
json.dump(Marks, file)
Output
Running this code will create a file called marks.json with JSON object Marks written in it.
{"name": [{"Rahul": {"Maths": "95", "Physics": "88", "Chemistry": "88"}}, {"Raj": {"Maths": "70", "Physics": "94", "Chemistry": "90"}}]}

In the above code, we have first created a file called marks.json with WRITE mode. Then we have used the json.dump() method to write the JSON object in it.
Alternatively, we can also use the json.dumps() method to store the JSON object in a Python string object. dumps() method has only one argument, which is the JSON object we want to it. We are not passing the file path here because we are not writing the object to the disk. Below is the code on how to use dumps():
Marks_string = json.dumps(Marks)
print(Marks_string)
Output
The json.dumps() method will write the JSON object to a Python string and printing it will produce the following output:
{"name": [{"Rahul": {"Maths": "95", "Physics": "88", "Chemistry": "88"}}, {"Raj": {"Maths": "70", "Physics": "94", "Chemistry": "90"}}]}

Deserialization JSON
Deserialization is the opposite process of serialization. It is the technique to decode the JSON data into Python objects. Technically, the transformation from serialization is not perfect, which means if we encode an object to JSON using serialization, later, if we deserialize it, we may not get the same object. For example, if we encode a tuple, we will get back a list after decoding it.
The conversion table for deserialization is:
JSON | Python |
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
Let us see the tuple and list example:
org_data = (1,2,3,4)
enc_data = json.dumps(org_data)
dec_data = json.loads(enc_data)
print(type(org_data))
print(type(dec_data))

Reading a JSON file
We first want to learn to use JSON in our application to read it in our Python codes. To read a json file, we can use the load() function provided by the json library. Suppose we have a file called students.json which contains JSON objects, and we want to load it in our program.
Students.json
{
"students":[
{
"name":"Javed",
"id":"01",
"class":"fifth",
"subjects":["Maths","Science","Political Science"]
},
{"name":"Ravi",
"id":"14",
"class":"tenth",
"subjects":["Maths","Physics","Chemistry","Biology","Political Science"]
}
]
}
Below is the code to read this file in Python:
import json
with open(r'students.json') as file:
data = json.load(file)
print(data)
Output
After running this code, the students.json file will get loaded, and the program will print the content inside.
{'students': [{'name': 'Javed', 'id': '01', 'class': 'fifth', 'subjects': ['Maths', 'Science', 'Political Science']}, {'name': 'Ravi', 'id': '14', 'class': 'tenth', 'subjects': ['Maths', 'Physics', 'Chemistry', 'Biology', 'Political Science']}]}

Just like the dumps() and dump() method, we can also use the loads() method to deserialize data. See the example below to use the loads function:
Data = {
"students":[
{"name":"Javed",
"id":"01",
"class":"fifth",
"subjects":["Maths","Science","Political Science"]
},
{"name":"Ravi",
"id":"14",
"class":"tenth",
"subjects":["Maths","Physics","Chemistry","Biology","Political Science"]
}
]
}
a = json.dumps(Data)
Students = json.loads(a)
print(Students)
Output
{'students': [{'name': 'Javed', 'id': '01', 'class': 'fifth', 'subjects': ['Maths', 'Science', 'Political Science']}, {'name': 'Ravi', 'id': '14', 'class': 'tenth', 'subjects': ['Maths', 'Physics', 'Chemistry', 'Biology', 'Political Science']}]}
