在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)
代码说明
flatten_json函数:递归遍历嵌套JSON,将子字段按「父键-子键」的格式生成新键,支持处理任意层级的嵌套结构。- 扁平化处理:传入示例数据后,直接得到目标格式的扁平JSON。
- 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
相关产品推荐
相关产品推荐

