Flattening JSON objects in Python
Last Updated :
01 Aug, 2022
JSON(JavaScript Object Notation) is a data-interchange format that is human-readable text and is used to transmit data, especially between web applications and servers. The JSON files will be like nested dictionaries in Python. To convert a text file into JSON, there is a json module in Python. This module comes in-built with Python standard modules, so there is no need to install it externally. A flatten json is nothing but there is no nesting is present and only key-value pairs are present.
Example:
Unflattened JSON: {‘user’ :{‘Rachel’:{‘UserID’:1717171717, ‘Email’: ‘rachel1999@gmail.com’, ‘friends’: [‘John’, ‘Jeremy’, ‘Emily’]}}} Flattened JSON: {‘user_Rachel_friends_2’: ‘Emily’, ‘user_Rachel_friends_0’: ‘John’, ‘user_Rachel_UserID’: 1717171717, ‘user_Rachel_Email’: ‘rachel1999@gmail.com’, ‘user_Rachel_friends_1’: ‘Jeremy’}
Need of flattening JSON: There are many reasons for the need of flattening JSON, such as for a better and more understandable view that is there are only key-value pairs are present without any nesting. It also allows for context-specific security and constraints to be implemented in a readable but in a more verbose way.
Approach to flatten JSON:
There are many ways to flatten JSON. There is one recursive way and another by using the json-flatten library.
Approach 1: Recursive Approach
Now we can flatten the dictionary array by a recursive approach which is quite easy to understand. The recursive approach is a bit slower than using the json-flatten library.
Example:
Python3
unflat_json = { 'user' :
{ 'Rachel' :
{ 'UserID' : 1717171717 ,
'Email' : 'rachel1999@gmail.com' ,
'friends' : [ 'John' , 'Jeremy' , 'Emily' ]
}
}
}
def flatten_json(y):
out = {}
def flatten(x, name = ''):
if type (x) is dict :
for a in x:
flatten(x[a], name + a + '_' )
elif type (x) is list :
i = 0
for a in x:
flatten(a, name + str (i) + '_' )
i + = 1
else :
out[name[: - 1 ]] = x
flatten(y)
return out
print (flatten_json(unflat_json))
|
Output:
{‘user_Rachel_friends_2’: ‘Emily’, ‘user_Rachel_friends_0’: ‘John’, ‘user_Rachel_UserID’: 1717171717, ‘user_Rachel_Email’: ‘rachel1999@gmail.com’, ‘user_Rachel_friends_1’: ‘Jeremy’}
Approach 2: Using flatten_json library
The json-flatten library provides functions for flattening a JSON object to a single key-value pairs, and unflattening that dictionary back to a JSON object. Installing library In order to use the flatten_json library, we need to install this library. flatten_json can be installed by running the following command in the terminal.
pip install flatten_json
Example:
Python3
from flatten_json import flatten
unflat_json = { 'user' :
{ 'Rachel' :
{ 'UserID' : 1717171717 ,
'Email' : 'rachel1999@gmail.com' ,
'friends' : [ 'John' , 'Jeremy' , 'Emily' ]
}
}
}
flat_json = flatten(unflat_json)
print (flat_json)
|
Output:
{‘user_Rachel_UserID’: 1717171717, ‘user_Rachel_Email’: ‘rachel1999@gmail.com’, ‘user_Rachel_friends_0’: ‘John’, ‘user_Rachel_friends_1’: ‘Jeremy’, ‘user_Rachel_friends_2’: ‘Emily’}
Please Login to comment...