将大型嵌套JSON转换为CSV

时间:2016-12-08 20:27:43

标签: python json csv nested

我是Python的新手,我需要将几个嵌套的JSON文件转换为CSV文件。

这些结构如下:

{'Z': {'@SchemaVersion': 9,
  'FD': [{'FDRecord': [{'NewCase': {'@TdrRecVer': 5,
   'CaseLabel': '',
   'StdHdr': {'DevDateTime': '2000-05-02T10:43:18',
    'ElapsedTime': 0,
    'GUID': '5815D34615C15690936B822714009468',
    'MsecTime': 5012,
    'RecId': 4},
   'UniqueCaseId': '5389F346136315497325122714009468'}},
 {'NewCase': {'@TdrRecVer': 5,
   'CaseLabel': '',
   'StdHdr': {'DevDateTime': '2000-05-02T10:43:18',
    'ElapsedTime': 0,
    'GUID': '5819D346166610458312622714009468',
    'MsecTime': 9459,
    'RecId': 4},
   'UniqueCaseId': '5819F346148627009653284714009468'}},
 {'AnnotationEvt': {'@EvtName': 'New',
   '@TdrRecVer': 1,
   'DevEvtCode': 13,
   'Payload': '0 0 0 0',
   'StdHdr': {'DevDateTime': '2000-05-02T10:43:18',
    'ElapsedTime': 0,
    'GUID': '5899D34616BC1000938B824538219968',
    'MsecTime': 7853,
    'RecId': 8},
   'TreatmentSummary': 1,
   'XidCode': '0000000B'}},
 {'TrendRpt': {'@TdrRecVer': 9,
   'CntId': 0,
   'DevEvtCode': 30,
   'StdHdr': {'DevDateTime': '2000-05-02T10:43:18',
    'ElapsedTime': 0,
    'GUID': '5819C34616781004852225698409468',
    'MsecTime': 4052,
    'RecId': 12}, ...

我的问题是,大多数在线示例显示如何在非常小的json中读取并通过在创建csv时明确声明键或字段名称将其写入csv。我的文件太大了,无法做到这一点,其中一些超过40MB。

我尝试从网上跟随另一个人的例子(下面),但没有成功:

import json
import csv

with open('path-where-json-located') as file:
    data_parse = json.load(file)

data = data_parse['Z']

data_writer = open('path-for-csv', 'w')

csvwriter = csv.writer(data_writer)

count=0
for i in data:
    if count == 0:
        header = i.keys()
        csvwriter.writerow(header)
        count+=1
    csvwriter.writerow(i.values())

data_writer.close()

当我运行它时,我收到以下错误:

AttributeError: 'str' object has no attribute 'keys'

据我所知,由于某些原因,它正在处理我想要作为字符串对象提取的键,但我不知道如何绕过它并正确地将其解析为csv。

0 个答案:

没有答案
相关问题