如何解析嵌套JSON并保存为CSV?附JSON结构示例
解析嵌套JSON并转CSV的解决方案
这种带动态唯一键的嵌套JSON(看起来像是Firebase Realtime Database导出的格式对吧?)转CSV其实很直接,用Python标准库就能搞定,不用装额外依赖。我给你一步步拆解:
步骤1:先理清JSON结构
你的JSON里,persons是顶层对象,每个键(比如-L1oNCxcRtS1)是用户的唯一标识,对应的值是该用户的属性集合——而且不同用户的属性可能不全(有的有emailAddress,有的没有),所以我们得先收集所有可能出现的字段,再统一处理数据。
步骤2:Python实现代码
import json import csv # 1. 读取并解析JSON文件 with open('data.json', 'r', encoding='utf-8') as f: raw_data = json.load(f) # 2. 提取用户数据,同时保留原始的唯一ID user_records = [] for person_id, user_attrs in raw_data['persons'].items(): # 把唯一ID加入属性字典,方便后续溯源 user_attrs['person_id'] = person_id user_records.append(user_attrs) # 3. 收集所有可能的字段名(确保CSV表头覆盖所有属性) all_field_names = set() for record in user_records: all_field_names.update(record.keys()) # 可以手动调整字段顺序,比如把person_id放最前面 sorted_fields = sorted(list(all_field_names)) # 4. 写入CSV文件 with open('persons_output.csv', 'w', newline='', encoding='utf-8') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=sorted_fields) # 先写表头 writer.writeheader() # 批量写入所有记录,缺失的字段会自动填充为空值 writer.writerows(user_records)
代码说明
- 特意把
persons下的唯一键(比如-L1oNCxcRtS1)作为person_id字段加入数据,这样CSV里能直接关联到原始JSON的用户标识,方便后续核对。 - 用集合
set收集字段名,自动去重,不管用户有没有某个属性,CSV表头都会包含它,缺失属性的行对应位置会是空值,不会报错。 csv.DictWriter可以直接把字典映射成CSV行,省去了手动对齐字段的麻烦,效率很高。
小提醒
如果你的JSON文件特别大,一次性加载到内存可能吃不消,可以改成逐行解析的方式,但中小规模的文件用上面的代码完全没问题。另外,布尔值(比如isSocialDataShared)和日期格式会被原样保留,后续用Excel或其他工具处理也很方便。
内容的提问来源于stack exchange,提问作者user1829708
相关产品推荐
相关产品推荐

