summarize.py 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. import json
  2. def summarize_json(data, max_depth=2, current_depth=0, list_sample_size=1):
  3. if isinstance(data, dict):
  4. if current_depth >= max_depth:
  5. return f"dict with keys: {list(data.keys())[:10]}" + ("..." if len(data.keys()) > 10 else "")
  6. result = {}
  7. for k, v in data.items():
  8. result[k] = summarize_json(v, max_depth, current_depth + 1)
  9. return result
  10. elif isinstance(data, list):
  11. if len(data) == 0: return []
  12. if current_depth >= max_depth:
  13. return f"list of length {len(data)}"
  14. sample = [summarize_json(data[i], max_depth, current_depth + 1) for i in range(min(list_sample_size, len(data)))]
  15. if len(data) > list_sample_size:
  16. sample.append(f"... and {len(data)-list_sample_size} more items")
  17. return sample
  18. elif isinstance(data, str):
  19. val = data.replace('\n', ' ')
  20. return val[:100] + "..." if len(val) > 100 else val
  21. else:
  22. return data
  23. for file in ["tmp_api1.json", "tmp_api2.json"]:
  24. print(f"\n================ {file} ================")
  25. try:
  26. with open(file, "r") as f:
  27. js = json.load(f)
  28. print(json.dumps(summarize_json(js, max_depth=4), indent=2, ensure_ascii=False))
  29. except Exception as e:
  30. print(f"Error: {e}")