将嵌套的json转换为csv到表json api

时间:2018-03-07 18:19:37

标签: json csv

我想让我的json转到csv,这样我就可以将它上传到Google工作表上并将其设为json api。每当我有更改数据时,我只会在谷歌表上更改它。但我在将json文件转换为csv时遇到问题,因为每当我转换它时它都会更改变量。我使用https://toolslick.com/csv-to-json-converter将我的json文件转换为csv。 将json嵌套转换为csv的最佳方法是什么?

JSON

{
  "options": [
    {
      "id": "1",
      "value": "Jumbo",
      "shortcut": "J",
      "textColor": "#FFFFFF",
      "backgroundColor": "#00000"
    },
    {
      "id": "2",
      "value": "Hot",
      "shortcut": "D",
      "textColor": "#FFFFFF",
      "backgroundColor": "#FFFFFF"
    }
  ],
  "categories": [
    {
      "id": "1",
      "order": 1,
      "name": "First Category",
      "active": true
    },
    {
      "id": "2",
      "order": 2,
      "name": "Second Category",
      "shortcut": "MT",
      "active": true
    }
  ],
  "products": [
    {
      "id": "03c6787c-fc2a-4aa8-93a3-5e0f0f98cfb2",
      "categoryId": "1",
      "name": "First Product",
      "shortcut": "First",
      "options": [
        {
          "optionId": "1",
          "price": 23
        },
        {
          "optionId": "2",
          "price": 45
        }
      ],
      "active": true
    },
    {
      "id": "e8669cea-4c9c-431c-84ba-0b014f0f9bc2",
      "categoryId": "2",
      "name": "Second Product",
      "shortcut": "Second",
      "options": [
        {
          "optionId": "1",
          "price": 11
        },
        {
          "optionId": "2",
          "price": 20
        }
      ],
      "active": true
    }
  ],
  "discounts": [
    {
      "id": "1",
      "name": "S",
      "type": 1,
      "amount": 20,
      "active": true
    },
    {
      "id": "2",
      "name": "P",
      "type": 1,
      "amount": 20,
      "active": true
    },
    {
      "id": "3",
      "name": "G",
      "type": 2,
      "amount": 5,
      "active": true
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

使用python,这可以轻松完成或几乎完成。也许这段代码会以某种方式帮助您理解这一点。

import json,csv    

data = []

with open('your_json_file_here.json') as file:
    for line in file:
        data.append(json.loads(line))
length = len(data)

with open('create_new_file.csv','w') as f:
    writer = csv.writer(f)
    writers = csv.DictWriter(f, fieldnames=['header1','header2'])
    writers.writeheader()
    for iter in range(length):

        writer.writerow((data[iter]['specific_col_name1'],data[iter]['specific_col_name2']))
f.close()