0
大家好, 我有一個python腳本,它將一些列表數據寫入json文件。腳本在列表中迭代並寫入json文件,但它有效,但我遇到了一個問題:根元素也被迭代,並且它在json文件中被寫入了數千次,因此它變得無效。 這部分應該JSON怎麼樣子:使用python編寫和迭代json,但使用多個根元素
{
"acList": [{
"Icao": "400025",
"Alt": 24475,
"GAlt": 24475,
"AltT": 0,
"Call": "TEST1234",
"Tisb": false,
"TrkH": false,
"Sqk": "0644",
"Help": false,
"VsiT": 0,
"Gnd": false,
"SpdTyp": 0,
"CallSus": false,
"Trt": 1
},
{
"Icao": "49528A",
"Alt": 17375,
"GAlt": 17632,
"InHg": 30.177166,
"AltT": 0,
"Call": "TAP362",
"Lat": 50.813118,
"Long": -1.117325,
"Mlat": false,
"Tisb": false,
"Spd": 357.0,
"Trak": 39.9,
"TrkH": false,
"Sqk": "7473",
"Help": false,
"Vsi": -1472,
"VsiT": 0,
"Gnd": false,
"SpdTyp": 0,
"CallSus": false,
"Trt": 2
}]
}
雖然這是我所得到的:
{
"acList": [
{
"GAlt": 33975,
"Mlat": false,
"Tisb": false,
"Trt": 1,
"Help": false,
"InHg": 0,
"CallSus": false,
"Long": 17.1752,
"TrkH": false,
"Icao": "02A196",
"Sqk": "3710",
"Call": "TU217",
"Trak": 261,
"Gnd": false,
"Lat": 37.8024,
"Vsi": 0,
"Alt": 33975,
"AltT": 0,
"Spd": 428,
"SpdTyp": 0,
"VsiT": 0
}
]
}{
"acList": [
{
"GAlt": 0,
"Mlat": false,
"Tisb": false,
"Trt": 1,
"Help": false,
"InHg": 0,
"CallSus": false,
"Long": 14.4933,
"TrkH": false,
"Icao": "4D2027",
"Sqk": "2704",
"Call": "KM103",
"Trak": 113,
"Gnd": false,
"Lat": 35.8478,
"Vsi": 0,
"Alt": 0,
"AltT": 0,
"Spd": 0,
"SpdTyp": 0,
"VsiT": 0
}
]
}{
正如你可以看到我有反覆,反覆的根元素。我應該做的只是保留第一個根元素和正確的標點符號。這是我在Python中的實際代碼:
count = 0
for hex in keys:
data = {
"acList": [{
"Icao": icao[count],
"Alt": alt[count],
"GAlt": alt[count],
"InHg": 0,
"AltT": 0,
"Call": call[count],
"Lat": lat[count],
"Long": long[count],
"Mlat": False,
"Tisb": False,
"Spd": speed[count],
"Trak": track[count],
"TrkH": False,
"Sqk": sqk[count],
"Help": False,
"Vsi": vsi[count],
"VsiT": 0,
"Gnd": False,
"SpdTyp": 0,
"CallSus": False,
"Trt": count + 1
}]
}
count = count + 1
jsonData = json.dumps(data, indent=2, separators=(',', ': '))
print(jsonData)
with open('aircraft.json', 'a') as f:
f.write(jsonData)
對不起,對於非常長的帖子,我希望你能幫助我。謝謝!
你爲什麼要單獨追加一個文件?以這種方式生成有效的json將會很困難。而是在內存中構建數據結構,然後將整個事件序列化爲json *。 –
for循環應該創建一個單一的dicts列表。這個列表應該被添加到根詞典中:'data = {'acList':lst}'。最後,根字典應該被轉儲到文件中。 – ekhumoro