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

Python:解码JSON记录时忽略内部'value'键实现数据扁平化处理

递归处理嵌套JSON提取value键的实现方案

你可以通过递归遍历函数实现全层级的value键提取,逻辑完全兼容你现有单层推导式的处理规则,同时支持任意深度的字典、列表嵌套场景:

核心实现代码

def extract_value_nodes(node):
    # 处理字典类型节点
    if isinstance(node, dict):
        # 存在value键则优先提取value值继续递归处理
        if "value" in node:
            return extract_value_nodes(node["value"])
        # 无value键则递归处理字典下所有子节点
        return {k: extract_value_nodes(v) for k, v in node.items()}
    # 处理列表/数组类型嵌套节点
    if isinstance(node, list):
        return [extract_value_nodes(item) for item in node]
    # 基础类型、None等非容器类型直接返回
    return node

调用方式

直接将你要处理的原始JSON对象传入函数即可,替换你原有的字典推导式逻辑:

processed_message = extract_value_nodes(message_value)

功能说明

  • 完全兼容你原有逻辑:自动忽略带value键的字典外层,直接取value对应的值
  • 支持无限层级嵌套:不管value键出现在哪一层级都会被正确提取
  • 兼容数组场景:如果JSON中包含列表结构,会自动遍历处理列表内的所有元素
  • 无value键的结构会被完整保留,不会影响其他字段的结构

测试示例

输入深层嵌套的样例数据:

test_input = {
    "accountNumber": {"value": b"8764622708"},
    "subscriberNumber": {"value": b"8764622708"},
    "userProfile": {
        "value": {
            "username": {"value": "user001"},
            "bindCards": [
                {"cardType": {"value": "储蓄卡"}, "cardNo": {"value": "622xxxxxx"}},
                {"cardType": {"value": "信用卡"}, "cardNo": {"value": "439xxxxxx"}}
            ]
        }
    },
    "otherInfo": {"remark": "无value字段,完整保留"}
}

处理后输出:

{
    "accountNumber": b"8764622708",
    "subscriberNumber": b"8764622708",
    "userProfile": {
        "username": "user001",
        "bindCards": [
            {"cardType": "储蓄卡", "cardNo": "622xxxxxx"},
            {"cardType": "信用卡", "cardNo": "439xxxxxx"}
        ]
    },
    "otherInfo": {"remark": "无value字段,完整保留"}
}

处理完成后你就可以按照普通扁平化JSON的逻辑转换为CSV格式。

内容的提问来源于stack exchange,提问作者Thadeu Melo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:09:03