1. import json
  2. import argparse
  3. def enforce_json_limit(data, max_size=1024):
  4. """
  5. Enforces a size limit on JSON data.
  6. Truncates data if it exceeds the limit.
  7. """
  8. if isinstance(data, dict):
  9. return {k: enforce_json_limit(v, max_size) for k, v in data.items() if not isinstance(v, (dict, list))}
  10. elif isinstance(data, list):
  11. return [enforce_json_limit(item, max_size) for item in data if not isinstance(item, (dict, list))]
  12. else:
  13. return data
  14. def main():
  15. parser = argparse.ArgumentParser(description="Enforce JSON response size limits.")
  16. parser.add_argument("input_file", help="Path to the input JSON file.")
  17. parser.add_argument("-o", "--output_file", help="Path to the output JSON file.")
  18. parser.add_argument("-l", "--limit", type=int, default=1024, help="Maximum JSON size in bytes (default: 1024).")
  19. args = parser.parse_args()
  20. try:
  21. with open(args.input_file, "r") as f:
  22. try:
  23. data = json.load(f)
  24. except json.JSONDecodeError as e:
  25. print(f"Error decoding JSON: {e}")
  26. return
  27. limited_data = enforce_json_limit(data, args.limit)
  28. if args.output_file:
  29. with open(args.output_file, "w") as f:
  30. json.dump(limited_data, f, indent=4)
  31. print(f"Limited JSON data saved to {args.output_file}")
  32. else:
  33. print(json.dumps(limited_data, indent=4))
  34. except FileNotFoundError:
  35. print(f"Error: Input file '{args.input_file}' not found.")
  36. except Exception as e:
  37. print(f"An error occurred: {e}")
  38. if __name__ == "__main__":
  39. main()

Add your comment