import json
import argparse
def enforce_json_limit(data, max_size=1024):
"""
Enforces a size limit on JSON data.
Truncates data if it exceeds the limit.
"""
if isinstance(data, dict):
return {k: enforce_json_limit(v, max_size) for k, v in data.items() if not isinstance(v, (dict, list))}
elif isinstance(data, list):
return [enforce_json_limit(item, max_size) for item in data if not isinstance(item, (dict, list))]
else:
return data
def main():
parser = argparse.ArgumentParser(description="Enforce JSON response size limits.")
parser.add_argument("input_file", help="Path to the input JSON file.")
parser.add_argument("-o", "--output_file", help="Path to the output JSON file.")
parser.add_argument("-l", "--limit", type=int, default=1024, help="Maximum JSON size in bytes (default: 1024).")
args = parser.parse_args()
try:
with open(args.input_file, "r") as f:
try:
data = json.load(f)
except json.JSONDecodeError as e:
print(f"Error decoding JSON: {e}")
return
limited_data = enforce_json_limit(data, args.limit)
if args.output_file:
with open(args.output_file, "w") as f:
json.dump(limited_data, f, indent=4)
print(f"Limited JSON data saved to {args.output_file}")
else:
print(json.dumps(limited_data, indent=4))
except FileNotFoundError:
print(f"Error: Input file '{args.input_file}' not found.")
except Exception as e:
print(f"An error occurred: {e}")
if __name__ == "__main__":
main()
Add your comment