将 Json 转换为 CSV

Convert Json into CSV

我有 json 这种格式,想转换成 CSV 文件。

{
  "extrapolationLevel": 1,
  "columnNames": [
    "name",
    "usersession.country",
    "application",
    "usersession.osFamily",
    "usersession.startTime",
    "visuallyCompleteTime"
  ],
  "values": [
    [
      "pdp",
      "Serbia",
      "Desktop",
      "Windows",
      1573215462076,
      1503
    ],

  ]
}

我想将这个 json 转换成 CSV 格式这是我的脚本

import csv
import json

with open('response_1573222394875.json') as infile:
    Data = json.loads(infile.read())

with open("q.csv", "w") as outfile:
    f = csv.writer(outfile)
    f.writerow(["name","usersession.country","application","usersession.osFamily","usersession.startTime","visuallyCompleteTime"])
    f.writerow([Data["name"], Data["usersession.country"],
                Data["application"],
                Data["usersession.osFamily"],
                Data["usersession.startTime"],
                Data["visuallyCompleteTime"]])

预期输出

 name usersession.country application usersession.osFamilyusersession.startTime visuallyCompleteTime
      pdp      Serbia      Desktop      Windows      1573215462076      1503
      plp      us           APP           Windows      1573215462076      1548
    startpage  uk            Site         Windows      1573215462076      1639
      product  india      Desktop        Windows      1573215462076      3194
       pdp     Vietnam      APP         Windows        1573215462076      3299

谁能帮帮我。

Data的键是"extrapolationLevel""columnNames""values",没有别的。 Data["usersession.country"],例如,没有意义,因为不存在带有该键的字典。这些值只是存储在列表中。以下是您需要做的所有事情:

with open("q.csv", "w") as outfile:
    f = csv.writer(outfile)
    f.writerow(Data["columnNames"])
    f.writerows(Data["values"])
import json

json_str = '''
{
  "extrapolationLevel": 1,
  "columnNames": [
    "name",
    "usersession.country",
    "application",
    "usersession.osFamily",
    "usersession.startTime",
    "visuallyCompleteTime"
  ],
  "values": [
    [
      "pdp",
      "Serbia",
      "Desktop",
      "Windows",
      1573215462076,
      1503
    ]
  ]
}
'''

data = json.loads(json_str)

csv_row = lambda v: ('"{}",' * len(v)).format(*v)[:-1] # remove trailing comma

print(csv_row(data["columnNames"]))
for value in data["values"]:
    print(csv_row(value))