使用Python基于指定值过滤嵌套JSON并扁平化输出的实现方法
Python实现JSON数据过滤及扁平化输出方案
- 处理逻辑:
- 解析JSON数据:标准JSON格式不支持
#注释,需先删除注释内容或使用支持注释的JSON解析库 - 提取根节点的
timeStamp和type字段值 - 根据
type取值从pref字段中读取对应数据,做差异化处理:- type为company:pref对应值为数组,遍历数组每个元素拼接输出
- type为food:pref对应值为对象,取
value字段值拼接输出
- 输出符合要求的扁平化结果
- 解析JSON数据:标准JSON格式不支持
代码示例
import json # 已移除注释的标准JSON字符串 json_str = ''' { "timeStamp": 1630918356182, "type": "company", "pref": { "food": { "value": "veg" }, "company": [ "A", "B" ] } } ''' # 解析JSON data = json.loads(json_str) ts = data["timeStamp"] data_type = data["type"] pref_data = data["pref"][data_type] output_lines = [] if data_type == "company": for item in pref_data: output_lines.append(f"{ts} {data_type} {item}") elif data_type == "food": output_lines.append(f"{ts} {data_type} {pref_data['value']}") # 输出结果 for line in output_lines: print(line)
如果需要保留原始JSON中的注释直接解析,可以使用demjson3库:
- 先执行安装命令:
pip install demjson3 - 解析部分替换为以下代码即可,后续逻辑不变:
import demjson3 json_with_comment = ''' { "timeStamp": 1630918356182, "type": "company", # possible values: food, company "pref": { "food": { "value": "veg" }, "company": [ "A", "B" ] } } ''' data = demjson3.decode(json_with_comment)
运行后输出结果如下:
1630918356182 company A 1630918356182 company B
内容的提问来源于stack exchange,提问作者Govind
相关产品推荐
相关产品推荐

