You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python基于指定值过滤嵌套JSON并扁平化输出的实现方法

Python实现JSON数据过滤及扁平化输出方案
  • 处理逻辑:
    1. 解析JSON数据:标准JSON格式不支持#注释,需先删除注释内容或使用支持注释的JSON解析库
    2. 提取根节点的timeStamp和type字段值
    3. 根据type取值从pref字段中读取对应数据,做差异化处理:
      • type为company:pref对应值为数组,遍历数组每个元素拼接输出
      • type为food:pref对应值为对象,取value字段值拼接输出
    4. 输出符合要求的扁平化结果

代码示例

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库:

  1. 先执行安装命令:pip install demjson3
  2. 解析部分替换为以下代码即可,后续逻辑不变:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:00:01