如何用Python解析含列表的嵌套JSON并转换为可读格式
用Python解析嵌套JSON并格式化输出
问题背景
给定的原始数据是嵌套结构:外层是Python字典格式的数据,其中data数组里的VALUE字段存储的是字符串形式的JSON,需要将其解析为结构化JSON并格式化输出,方便后续处理。
原始数据:
raw_data = {'data': [{'VALUE': '{"filters":[ {"field":"example1","operation":"like","values":["Completed"]},{"field":"example2","operation":"like","values":["value1","value2","value3"]}]}'}]}
期望输出格式化后的JSON:
{ "filters": [ { "field": "example1", "operation": "like", "values": [ "Completed" ] }, { "field": "example2", "operation": "like", "values": [ "value1", "value2", "value3" ] } ] }
解决步骤
- 解析外层Python结构:原始数据用单引号定义,属于Python字典格式,用
ast.literal_eval可以安全解析(避免手动替换引号的麻烦)。 - 提取嵌套的JSON字符串:从解析后的结构中取出
data[0]['VALUE']对应的字符串。 - 解析JSON字符串为Python对象:用
json.loads()将字符串转为JSON对象。 - 格式化输出JSON:用
json.dumps()设置indent参数生成带缩进的可读格式。
完整代码示例
import json import ast # 原始数据 raw_data = {'data': [{'VALUE': '{"filters":[ {"field":"example1","operation":"like","values":["Completed"]},{"field":"example2","operation":"like","values":["value1","value2","value3"]}]}'}]} # 解析外层Python字典 parsed_raw = ast.literal_eval(str(raw_data)) # 提取嵌套的JSON字符串 json_str = parsed_raw['data'][0]['VALUE'] # 解析JSON字符串 formatted_json = json.loads(json_str) # 格式化输出 print(json.dumps(formatted_json, indent=4))
扩展:写入文件
如果需要将结果保存到文件用于后续处理,可添加以下代码:
with open('formatted_filters.json', 'w') as f: json.dump(formatted_json, f, indent=4)
内容的提问来源于stack exchange,提问作者Juan Almada
相关产品推荐
相关产品推荐

