import json
def flatten_json(json_obj, sep='_', prefix=''):
"""
Flattens a JSON object into a single dictionary.
Args:
json_obj (dict): The JSON object to flatten.
sep (str): Separator for keys (default: '_').
prefix (str): Prefix for keys (default: '').
Returns:
dict: A flattened dictionary.
"""
flattened = {}
for k, v in json_obj.items():
new_key = prefix + sep + k if prefix else k
if isinstance(v, dict):
flattened.update(flatten_json(v, sep=sep, prefix=new_key))
elif isinstance(v, list):
for i, item in enumerate(v):
if isinstance(item, dict):
flattened.update(flatten_json(item, sep=sep, prefix=new_key + sep + str(i)))
else:
flattened[new_key + sep + str(i)] = item
else:
flattened[new_key] = v
return flattened
if __name__ == '__main__':
# Example Usage
json_data = {
"name": "John Doe",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Anytown",
"zip": "12345"
},
"phoneNumbers": [
{"type": "home", "number": "555-1234"},
{"type": "work", "number": "555-5678"}
]
}
flattened_data = flatten_json(json_data)
print(json.dumps(flattened_data, indent=4))
Add your comment