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

如何将外层键为ID的JSON文件正确转换为CSV?

JSON转CSV的正确处理方案

问题场景

你有如下格式的JSON文件:

{"16CD7631-0ED0-4DA0-8D3B-8BBB41992EED": {"id": "16CD7631-0ED0-4DA0-8D3B-8BBB41992EED", "longitude": "-122.406417", "reportType": "Other", "latitude": "37.785834"}, "91CA4A9C-9A48-41A2-8453-07CBC8DC723E": {"id": "91CA4A9C-9A48-41A2-8453-07CBC8DC723E", "longitude": "-1.1932383", "reportType": "Street Obstruction", "latitude": "45.8827419"}}

想要转换成如下格式的CSV:

id,longitude,reportType,latitude
16CD7631-0ED0-4DA0-8D3B-8BBB41992EED,-122.406417,Other,37.785834
91CA4A9C-9A48-41A2-8453-07CBC8DC723E,-1.1932383,Street Obstruction,45.8827419

直接用pd.read_json读取后转CSV会因为外层键是id,导致输出结构不符合预期,以下是两种可行的解决方法:

方法一:用Pandas处理

先读取JSON为字典,提取字典的values部分(也就是每个包含完整字段的对象),再转换成DataFrame,最后导出CSV:

import pandas as pd
import json

with open('sample.json', encoding='utf-8') as inputfile:
    data = json.load(inputfile)
    # 提取所有值组成列表,转换为DataFrame
    df = pd.DataFrame.from_records(list(data.values()))

df.to_csv('csvfile.csv', encoding='utf-8', index=False)

方法二:用原生Python模块处理(无需Pandas)

如果不想依赖Pandas,可以用json和csv原生模块完成转换:

import json
import csv

with open('sample.json', encoding='utf-8') as json_file:
    data = json.load(json_file)
    # 取第一个对象的键作为CSV表头
    headers = list(next(iter(data.values())).keys())
    
    with open('csvfile.csv', 'w', encoding='utf-8', newline='') as csv_file:
        writer = csv.DictWriter(csv_file, fieldnames=headers)
        writer.writeheader()
        # 遍历每个对象写入CSV行
        for item in data.values():
            writer.writerow(item)

这两种方法都能正确提取内层的完整数据,生成符合要求的CSV文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:10:27