おはようございます。 jsonファイルにリストのデータを書き込むpythonスクリプトがあります。スクリプトはリストを繰り返してjsonファイルを書きますが、動作しますが問題はあります:ルート要素も繰り返し取得され、jsonファイルで何千回も書き込まれて無効になります。jsonをpythonで複数のルート要素をエンコードして繰り返します
{
"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
}
]
}{
あなたは、私は繰り返し、繰り返しルート要素を持って見ることができるように:これは私が得るものですが
{
"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
}]
}
: これはJSONがどのように見えるべきかの部分です。私が達成すべきことは、最初の1つのルート要素と正しい句読点だけを保持することです。これは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の単一のリストを作成する必要があります。このリストはrootのdict: 'data = {'acList':lst}'に追加されます。最後に、ルート辞書をファイルにダンプする必要があります。 – ekhumoro