Search code examples
pythonjsonfileparsingexport-to-csv

Convert Json into CSV


I have json in this format and want to convert in to the CSV file.

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

  ]
}

I want to convert this json into CSV format here is my script

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

Expected Output

 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

can any one help me here please.


Solution

  • The keys of Data are "extrapolationLevel", "columnNames", and "values", nothing else. Data["usersession.country"], for example, doesn't make sense, because there's no dictionary present with that key. The values are just stored in lists. Here's all you need to do:

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