解析解码JSON数组为CSV

问题描述:

我有一个包含数百万这样大小的阵列的文件:解析解码JSON数组为CSV

{ 
    "leagues" : [{ 
     "tier" : "SILVER", 
     "entries" : [{ 
      "playerOrTeamId" : "359", 
      "playerOrTeamName" : "TryHard", 
      "division" : "II", 
      "leaguePoints" : "63", 
      "wins" : "65" 
     }], 
     "id" : "359" 
    }], 
    "summonerId" : "359", 
    "region" : "euw", 
    "updatedAt" : "1412122432" 
}, 

这是,例如,最小的阵列,还有一些阵列具有包含其他链接的阵列。有关主数组的额外信息。例如:

{ 
    "summonerId" : "477", 
    "region" : "euw", 
    "leagues" : [{ 
     "tier" : "GOLD", 
     "entries" : [{ 
      "playerOrTeamId" : "477", 
      "playerOrTeamName" : "Alucard662545", 
      "division" : "V", 
      "leaguePoints" : "9", 
      "wins" : "128" 
     }] 
    }, { 
     "tier" : "SILVER", 
     "entries" : [{ 
      "playerOrTeamId" : "TEAM-8d6a3640-2da8-11e2-99dc-782bcb4ce61a", 
      "playerOrTeamName" : "CAPCOMP BE", 
      "division" : "V", 
      "leaguePoints" : "0", 
      "wins" : "24" 
     }] 
    }, { 
     "tier" : "BRONZE", 
     "entries" : [{ 
      "playerOrTeamId" : "TEAM-8d6a3640-2da8-11e2-99dc-782bcb4ce61a", 
      "playerOrTeamName" : "CAPCOMP BE", 
      "division" : "I", 
      "leaguePoints" : "55", 
      "wins" : "8" 
     }] 
    }], 
    "updatedAt" : "1410786559" 
}, 

我从字面上把头发拉出头部,花了两个日夜才弄明白。我有MongoDB存储这些信息的地方,当我导出时,我只能得到解码的JSON数组。我需要这些东西完全CSV格式。我可以如何命名CSV格式一百万像这样的数组?

+4

除列分隔符之外,csv没有“格式”。没有规定嵌套记录。只有列。而且,由于您提供了** NO **详细信息,说明您希望您的csv的外观如何,因此我们无法帮助您 - 即使有人确实希望为您编写代码。我们在这里帮助,而不是为你做你的工作。 – 2014-10-08 21:05:54

+0

有点苛刻的马克B,但@ floppy软盘到您的问题,我想你可能不得不考虑创建一个使用java脚本的csv字符串,并循环你当前的js对象来提取然后添加到你的csv字符串。这是否超出了你的想法?显然,我会从一个较小的数据集开始测试。 – 2014-10-08 21:10:45

+0

我没有发现马克的事实和真实的陈述是苛刻的先生康科拉托。 – 2014-10-08 21:12:44

你有两个选择:

mongoexport是产生JSON或存储在MongoDB实例数据的CSV文件导出的工具。用例:

mongoexport --db users --collection contacts --csv --fieldFile fields.txt --out /opt/backups/contacts.csv 

这需要在\ R-终止fields.txt文件中指定的字段,每行一个,从集合contacts,并将它们放入/opt/backups/contacts.csv。

任何其他读取JSON的方式为一种语言并编写csv。蟒蛇的一个例子如下:

from pymongo import MongoClient 
import csv 
client = MongoClient() 
db = client['test-database'] 
collection = db.test_collection 
writer = csv.writer('/opt/backups/contacts.csv') 
writer.writerow([k for k in collection]) 
writer writerows([[v for v in c] for c in collection]) 

...并做同样的希望帮助。