将解码后的json数组解析为csv


parse decoded json array into 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格式化一百万个这样的数组?

您有两个选项:

mongoexport是一个实用程序,用于生成存储在MongoDB实例中的数据的JSON或CSV导出。用法示例:

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

它从集合contacts中获取''r-terminated fields.txt文件中指定的字段,每行一个,并将它们放入/opt/backups/contacts.csv.

任何其他方式读取JSON到一种语言和编写csv。python中的一个示例如下:

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])

并做同样的希望帮助。