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

在R中如何将JSON对象的嵌套key拆分为多个独立key并对应赋值

嵌套字符串化JSON字段扁平化解决思路

核心问题识别

你遇到的是「JSON字段值为字符串化的嵌套JSON」的场景,区别于普通原生JSON嵌套,多了一步字段值的反序列化步骤,处理逻辑如下:

分步处理方案

  • 步骤1:先解析顶层JSON,提取name等基础字段,同时单独捞出data1字段值
  • 步骤2:对data1的字符串值做二次JSON反序列化,拿到内部的data对象
  • 步骤3:按需求提取内部字段:
    • 取data.friends数组的第一个元素对象,把里面的age、married字段直接提到顶层
    • 新增空值的friends字段,删除原data1字段
  • 步骤4:批量处理大型文件时使用流式解析器,避免全量加载导致内存溢出

代码示例(Python)

import json
from ijson import items  # 流式解析大型JSON专用库

# 单条数据处理逻辑
def flatten_json(origin_item):
    # 提取顶层基础字段
    result = {
        "name": origin_item["name"],
        "friends": ""  # 按需求赋值空字符串
    }
    # 二次解析嵌套的字符串化JSON
    inner_data = json.loads(origin_item["data1"])
    # 提取friends数组第一个元素的字段
    friend_item = inner_data["data"]["friends"][0]
    result.update(friend_item)
    return result

# 大型JSON文件流式批量处理示例
with open("你的大文件路径.json", "r", encoding="utf-8") as f:
    # 逐元素解析,无需加载全量文件
    for item in items(f, "item"):  # 按你JSON顶层数组的实际key调整路径参数
        processed = flatten_json(item)
        # 按需存储/输出处理后的结果
        print(json.dumps(processed, ensure_ascii=False))

异常兼容注意点

  • 若data1里的JSON存在语法错误(比如你示例里的yes没有加引号),需要提前做字符串替换修复,或者使用容错JSON解析库处理
  • 要兼容friends数组为空、内部字段缺失的场景,提前加判空逻辑避免运行报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:15:02