1. import json
  2. def flatten_json(json_obj, sep='_', prefix=''):
  3. """
  4. Flattens a JSON object into a single dictionary.
  5. Args:
  6. json_obj (dict): The JSON object to flatten.
  7. sep (str): Separator for keys (default: '_').
  8. prefix (str): Prefix for keys (default: '').
  9. Returns:
  10. dict: A flattened dictionary.
  11. """
  12. flattened = {}
  13. for k, v in json_obj.items():
  14. new_key = prefix + sep + k if prefix else k
  15. if isinstance(v, dict):
  16. flattened.update(flatten_json(v, sep=sep, prefix=new_key))
  17. elif isinstance(v, list):
  18. for i, item in enumerate(v):
  19. if isinstance(item, dict):
  20. flattened.update(flatten_json(item, sep=sep, prefix=new_key + sep + str(i)))
  21. else:
  22. flattened[new_key + sep + str(i)] = item
  23. else:
  24. flattened[new_key] = v
  25. return flattened
  26. if __name__ == '__main__':
  27. # Example Usage
  28. json_data = {
  29. "name": "John Doe",
  30. "age": 30,
  31. "address": {
  32. "street": "123 Main St",
  33. "city": "Anytown",
  34. "zip": "12345"
  35. },
  36. "phoneNumbers": [
  37. {"type": "home", "number": "555-1234"},
  38. {"type": "work", "number": "555-5678"}
  39. ]
  40. }
  41. flattened_data = flatten_json(json_data)
  42. print(json.dumps(flattened_data, indent=4))

Add your comment