Flattening JSON objects in Python

29 Dec, 2020
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’}
There are many reasons for the need of flattening JSON, such as for a better and 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 more verbose way.
There are many ways to flatten JSON. There is one recursive way and another by using the json-flatten library.
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 json-flatten library.Example:# for a array value of a keyunflat_json = {'user' :               {'Rachel':                {'UserID':1717171717,                'Email': 'rachel1999@gmail.com',                 'friends': ['John', 'Jeremy', 'Emily']                }               }              }  # Function for flattening # jsondef flatten_json(y):    out = {}      def flatten(x, name =''):                  # If the Nested key-value         # pair is of dict type        if type(x) is dict:                          for a in x:                flatten(x[a], name + a + '_')                          # If the Nested key-value        # pair is of list type        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  # Driver codeprint(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’}
Example:
# for a array value of a keyunflat_json = {'user' :               {'Rachel':                {'UserID':1717171717,                'Email': 'rachel1999@gmail.com',                 'friends': ['John', 'Jeremy', 'Emily']                }               }              }  # Function for flattening # jsondef flatten_json(y):    out = {}      def flatten(x, name =''):                  # If the Nested key-value         # pair is of dict type        if type(x) is dict:                          for a in x:                flatten(x[a], name + a + '_')                          # If the Nested key-value        # pair is of list type        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  # Driver codeprint(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’}
Using flatten_json library: 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 libraryIn 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 json-flattenExample: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’}
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 json-flatten
Example:
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’}
Python json-programs
Python-json
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Different ways to create Pandas Dataframe
Enumerate() in Python
Read a file line by line in Python
How to Install PIP on Windows ?
Python String | replace()
*args and **kwargs in Python
Python Classes and Objects
Python OOPs Concepts
Introduction To PYTHON