我希望使用Python将我的JSON文件转换为CSV文件。我已经编写了一个脚本,但是无法正常工作。我的JSON模板如下:
{
"-K6v8Ht6nXCjaO_ApNGr" : {
"key1" : 0,
"key2" : false,
"key3" : 0,
"key4" : 0,
"key5" : "01/01/2016 04:04",
"key" : "-K6v8Ht6nXCjaO_ApNGr",
"key6" : "01/01/2016 04:04",
"key7" : 23,
"key8" : 0,
"key9" : {
"date" : 1,
"day" : 5,
"hours" : 4,
"minutes" : 4,
"month" : 0,
"seconds" : 56,
"time" : 1451617496647,
"timezoneOffset" : -60,
"year" : 116
},
"triedConnector" : {
"OPENSL" : -1,
"SAPA" : -1,
"USB" : -1,
"USB_7" : -1
},......
我的脚本(V3.x):
import json,csv,sys
# -*- coding:utf-8 -*-
fileInput = sys.argv[1]
fileOutput = sys.argv[2]
inputFile = open(fileInput,'r') #open json file
outputFile = open(fileOutput, 'w+') #load csv file
data = json.load(inputFile) #load json content
inputFile.close() #close the input file
csv_file = csv.writer(outputFile)
csv_file.writerow(["header 0", "header 1", "header 2", "header 3", "header 4"]) #headers
for value in data.values():
for v in value.values():
csv_file.writerow([unicode(v).encode('utf-8')])
for value in data.values():
for v in value.values():
for z in v.values():
csv_file.writerow([unicode(z).encode('utf-8')])
outputFile.close()#close the output file
在这个脚本中,第一个for循环应该打印如下:
-K6v8Ht6nXCjaO_ApNGr
-K6v8Ht6nXCjaO_ApNGr
-K6v8Ht6nXCjaO_ApNGr
我的第一个循环运行得非常完美,但不幸的是,我的第二个循环把这个输出写入了我的CSV文件。
-KjR-JvTm3BKVkYWoyTV
-Kj5ZdfgX8lLLi-htqPU
-KkC4t0XQoJDViNqt18n
False
"{u'seconds': 18, u'year': 117, u'month': 4, u'hours': 8, u'time': 1494223818226L, u'date': 8, u'minutes': 10, u'day': 1, u'timezoneOffset': -120}"
0
08/05/2017 08:10
"{u'OPENSL': -1, u'USB_7': -1, u'SAPA': -1, u'USB': -1}"
08/05/2017 08:10
-KjafVrmb_wuwb36xNq0
0
23
0
0
我想要一个水平输出,同时也需要针对嵌套对象的第三个循环。但是当我尝试运行最后一个循环时,出现了以下错误:
AttributeError: 'bool' object has no attribute 'values'.
简而言之,我的问题在于我需要像这样的水平输出:
K6v8Ht6nXCjaO_ApNGr 0, false, 0, 0, 01/01/2016 04:04, -K6v8Ht6nXCjaO_ApNGr K6v8Ht6nXCjaO_ApNGr 0, false, 0, 0, 01/01/2016 04:04, -K6v8Ht6nXCjaO_ApNGr
所以请问有谁能帮助我理解并解决这些问题呢?谢谢。
K6v8Ht6nXCjaO_ApNGr 0, false, 0, 0, 01/01/2016 04:04, -K6v8Ht6nXCjaO_ApNGr K6v8Ht6nXCjaO_ApNGr 0, false, 0, 0, 01/01/2016 04:04, -K6v8Ht6nXCjaO_ApNGr
。 - Mustafa Demir