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

在JavaScript中将嵌套JSON转换为扁平JSON以生成CSV

如何将嵌套JSON扁平化为指定格式并生成CSV

问题说明

需要将如下嵌套JSON结构:

{
    "dateSession": "14/11/2022",
    "HRdata": {
        "1": 86,
        "2": 88,
        "3": 86,
        "4": 85
    },
    "SPO2data": {
        "1": 98,
        "2": 97,
        "3": 97,
        "4": 96
    }
}

转换为以「父字段-子键」命名字段的扁平JSON结构:

{
    "dateSession": "14/11/2022",
    "HRdata-1": 86,
    "HRdata-2": 88,
    "HRdata-3": 86,
    "HRdata-4": 85,
    "SPO2data-1": 98,
    "SPO2data-2": 97,
    "SPO2data-3": 97,
    "SPO2data-4": 96
}

最终目标是基于扁平结构生成CSV文件。

Python实现方案

以下代码可完成JSON扁平化及CSV生成:

import json
import csv

def flatten_json(nested_json, parent_key='', sep='-'):
    flattened = {}
    for k, v in nested_json.items():
        new_key = f"{parent_key}{sep}{k}" if parent_key else k
        if isinstance(v, dict):
            flattened.update(flatten_json(v, new_key, sep=sep))
        else:
            flattened[new_key] = v
    return flattened

# 示例嵌套JSON数据
nested_data = {
    "dateSession": "14/11/2022",
    "HRdata": {
        "1": 86,
        "2": 88,
        "3": 86,
        "4": 85
    },
    "SPO2data": {
        "1": 98,
        "2": 97,
        "3": 97,
        "4": 96
    }
}

# 扁平化处理
flattened_data = flatten_json(nested_data)

# 打印扁平结果
print(json.dumps(flattened_data, indent=4))

# 生成CSV文件
with open('vital_signs.csv', 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=flattened_data.keys())
    writer.writeheader()
    writer.writerow(flattened_data)

代码说明

  1. flatten_json函数:递归遍历嵌套JSON,将子字段按「父键-子键」的格式生成新键,支持处理任意层级的嵌套结构。
  2. 扁平化处理:传入示例数据后,直接得到目标格式的扁平JSON。
  3. CSV生成:利用csv.DictWriter将扁平JSON写入CSV文件,自动生成表头和对应数据行。

执行代码后,当前目录会生成vital_signs.csv文件,内容如下:

dateSession,HRdata-1,HRdata-2,HRdata-3,HRdata-4,SPO2data-1,SPO2data-2,SPO2data-3,SPO2data-4
14/11/2022,86,88,86,85,98,97,97,96

内容的提问来源于stack exchange,提问作者pei-dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:40:24