json-flattening

Package to Flatten JSON data to relational Dataframe


Keywords
json, flatten
License
MIT
Install
pip install json-flattening==1.0.1

Documentation

Json-flattening

Flatten Json to Relational Dataframe

Instructions

  1. Install
pip install json-flattening
  1. Parameters
json_data: Input data to be flattend, should be dict or list of dict
list_split_to_many: If the final node list data should be splitted to one to many relation(i.e to multiple rows)
ignore_parent_key: Parent Keys to be ignored should be string or list
  1. Flatten json
from json_flattening import json_flatten

data = [{
    "firstName": "Rack",
    "lastName": "Jackon",
    "gender": "man",
    "age": 24,
    "address": {
        "streetAddress": "126",
        "city": "San Jone",
        "state": "CA",
        "postalCode": "394221"
    },
    "phoneNumbers": [
        { "type": "home", "number": "7383627627" }
    ]
},
{
    "firstName": "rock",
    "lastName": "Jackon",
    "gender": "man",
    "age": 24,
    "address": {
        "streetAddress": "126",
        "city": "San Jone",
        "postalCode": "394221"
    },
    "phoneNumbers": [
        { "type": "home", "number": "7383627627" }
    ]
}]

flatten_data = json_flatten(data)
firstName lastName gender age address_state address_streetAddress address_postalCode address_city phoneNumbers_type phoneNumbers_number
Rack Jackon man 24 CA 126 394221 San Jone home 7383627627
rock Jackon man 24 NaN 126 394221 San Jone home 7383627627
  1. With ignore parent Key
flatten_data = json_flatten(data,ignore_parent_key=['phoneNumbers','age'])
firstName lastName gender address_state address_streetAddress address_postalCode address_city
Rack Jackon man CA 126 394221 San Jone
rock Jackon man NaN 126 394221 San Jone

Disclaimer : For some heavily complex nested json which has combination of both sub json and other type like integer and string the relation may not work properly Do check your data for complex nested if realtions are proper. But for simple nested works perfect