Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Flattening JSON objects in Python

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

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




# for a array value of a key
unflat_json = {'user':
               {'Rachel':
                {'UserID': 1717171717,
                 'Email': 'rachel1999@gmail.com',
                 'friends': ['John', 'Jeremy', 'Emily']
                 }
                }
               }
 
# Function for flattening
# json
 
 
def 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 code
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’}


My Personal Notes arrow_drop_up
Last Updated : 01 Aug, 2022
Like Article
Save Article
Similar Reads
Related Tutorials