1. import json
  2. def nest_json(data):
  3. """
  4. Nests JSON payloads into a hierarchical structure with basic validation.
  5. """
  6. if not isinstance(data, (dict, list)):
  7. raise ValueError("Input must be a dictionary or a list.")
  8. if isinstance(data, dict):
  9. nested_data = {}
  10. for key, value in data.items():
  11. if not isinstance(key, str):
  12. raise ValueError("Keys must be strings.")
  13. nested_data[key] = nest_json(value)
  14. return nested_data
  15. elif isinstance(data, list):
  16. return [nest_json(item) for item in data]
  17. else:
  18. return data # Return primitive values as is
  19. if __name__ == '__main__':
  20. # Example usage
  21. json_data = {
  22. "name": "John Doe",
  23. "age": 30,
  24. "address": {
  25. "street": "123 Main St",
  26. "city": "Anytown",
  27. "zip": "12345"
  28. },
  29. "phoneNumbers": [
  30. {"type": "home", "number": "555-123-4567"},
  31. {"type": "work", "number": "555-987-6543"}
  32. ]
  33. }
  34. try:
  35. nested_json_data = nest_json(json_data)
  36. print(json.dumps(nested_json_data, indent=4))
  37. except ValueError as e:
  38. print(f"Error: {e}")
  39. #Example with list as root
  40. list_data = [1,2,{"a":3, "b":4}]
  41. try:
  42. nested_list_data = nest_json(list_data)
  43. print(json.dumps(nested_list_data, indent=4))
  44. except ValueError as e:
  45. print(f"Error: {e}")

Add your comment