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

如何在Python中将三层嵌套JSON数组拆分为多条JSON记录?

实现三层嵌套JSON数组的全拆分

步骤说明

你需要逐层对嵌套数组使用explode,并在每一步展开嵌套的字段,最终拆分到最内层的answerOptions。以下是具体实现方案:

示例代码

假设你的JSON字符串已解析为Python字典data,替换成你的实际数据即可:

import pandas as pd
import json

# 示例JSON字符串(替换为你的真实数据)
json_str = '''
{
  "questionGroups": [
    {
      "groupId": "g1",
      "questions": [
        {
          "questionId": "q1",
          "text": "问题1",
          "answerOptions": [{"optionId": "a1", "text": "选项1"}, {"optionId": "a2", "text": "选项2"}]
        },
        {
          "questionId": "q2",
          "text": "问题2",
          "answerOptions": [{"optionId": "a3", "text": "选项3"}, {"optionId": "a4", "text": "选项4"}]
        }
      ]
    },
    {
      "groupId": "g2",
      "questions": [
        {
          "questionId": "q3",
          "text": "问题3",
          "answerOptions": [{"optionId": "a5", "text": "选项5"}, {"optionId": "a6", "text": "选项6"}]
        },
        {
          "questionId": "q4",
          "text": "问题4",
          "answerOptions": [{"optionId": "a7", "text": "选项7"}, {"optionId": "a8", "text": "选项8"}]
        }
      ]
    }
  ]
}
'''

# 解析JSON为字典
data = json.loads(json_str)

# 1. 加载最外层数据,得到包含questionGroups的DataFrame
df = pd.json_normalize(data)

# 2. 拆分第一层数组questionGroups
df = df.explode('questionGroups').reset_index(drop=True)

# 3. 展开questionGroups中的嵌套字段,保留questions列
df = pd.concat([df.drop('questionGroups', axis=1), df['questionGroups'].apply(pd.Series)], axis=1)

# 4. 拆分第二层数组questions
df = df.explode('questions').reset_index(drop=True)

# 5. 展开questions中的嵌套字段,保留answerOptions列
df = pd.concat([df.drop('questions', axis=1), df['questions'].apply(pd.Series)], axis=1)

# 6. 拆分第三层数组answerOptions
df = df.explode('answerOptions').reset_index(drop=True)

# 7. 展开answerOptions中的嵌套字段
df = pd.concat([df.drop('answerOptions', axis=1), df['answerOptions'].apply(pd.Series)], axis=1)

# 查看最终结果(此时会生成8条目标记录)
print(df)

关键注意点

  • 每次explode后用reset_index(drop=True)重置索引,避免后续操作出现索引混乱
  • 通过pd.concat + apply(pd.Series)将嵌套字典的键转为DataFrame的列,实现字段展开
  • 严格按照从外到内的顺序拆分三层数组:questionGroups → questions → answerOptions

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:22:01