common.py 965 B

12345678910111213141516171819202122232425262728293031323334
  1. import json
  2. import re
  3. def str_to_json(content: str) -> dict:
  4. """
  5. 解析日志文件中的JSON格式字符串
  6. Args:
  7. log_content: 日志内容字符串
  8. Returns:
  9. 解析后的JSON数据(字典类型)
  10. """
  11. try:
  12. # 1. 清理输入字符串
  13. # 移除可能的前导和尾随空白
  14. content = content.strip()
  15. # 2. 提取JSON部分
  16. # 使用正则表达式匹配最外层的花括号及其内容
  17. json_pattern = r'{[^{}]*(?:{[^{}]*}[^{}]*)*}'
  18. match = re.search(json_pattern, content)
  19. if not match:
  20. raise ValueError("未找到有效的JSON内容")
  21. json_str = match.group(0)
  22. # 3. 解析JSON
  23. return json.loads(json_str)
  24. except json.JSONDecodeError as e:
  25. raise ValueError(f"JSON解析错误: {str(e)}")
  26. except Exception as e:
  27. raise ValueError(f"解析错误: {str(e)}")