2

新しいデータを JSON に追加するのに苦労しています。API から JSON データを呼び出して、"matches" の下の JSON ファイルに入れたいだけです。以下を含む空の JSON ファイルを作成し、そこから進んでいます。

{
    "matches": [
    ]
}

これが私のコードですが、重要なのは最後の行だけだと思います。

print ("No records found...\n Creating new match history bank.")
file_handle = open(all_matches_index, "w+")
file_handle.write('{\n    "matches": [\n    ]\n}')

for game_id in game_ids:
        full_match_data = watcher.match.by_id(my_region, game_id)
        #this is the problem line:
        file_handle.write(json.dumps({"matches" : full_match_data }, sort_keys=True, indent = 4, separators=(',', ': ')))

私はさまざまな解決策をたくさん試しましたが、オンラインでこれに対処しているようには見えないか、少なくとも私が読んでいるものを理解していません. 単純な問題であることはわかっていますが、解決できません。

私が試したことのいくつかの例:

file_handle.write(json.dumps(full_match_data["matches"], sort_keys=True, indent = 4, separators=(',', ': ')))

file_handle["matches"].write(json.dumps(full_match_data, sort_keys=True, indent = 4, separators=(',', ': ')))

file_handle["matches"] = {**full_match_data, file_handle["matches"] sort_keys=True, indent = 4, separators=(',', ': ')))}

file_handle.write(json.dumps({"matches" : [full_match_data]}, sort_keys=True, indent = 4, separators=(',', ': ')))

file_handle.write(json.dumps(["matches" {full_match_data}], sort_keys=True, indent = 4, separators=(',', ': ')))

編集 1: Pranav Hosangadi からの応答に基づく変更、

まず第一に、あなたの応答に感謝します。それには単純な修正よりもはるかに多くの情報が含まれており、これは私が学ぶのに本当に役立ちます.

コードを次のように変更しました。

file_handle = open(all_matches_index, "w+")
file_handle.write('{\n    "matches": [\n    ]\n}')
file_handle.close()


matches = []
for game_id in game_ids:
    full_match_data = watcher.match.by_id(my_region, game_id)
    matches.append(full_match_data)

with open(all_matches_index, "w") as file_handle:
    json.dump(file_handle, {"matches": matches})
    
    file_handle.close

残念ながら、うまくいきません。かなり長い間 (インテル ペンティアムであるため) 考えているようで、空のファイルを返しますか?

もう一度実行すると、ファイルが次のように書き込まれます。

{
    "matches": [
    ]
}

どこが間違っているのか教えていただけますか?

動作するようになったら、pythonic の方法に切り替えます。どうもありがとう。

4

2 に答える 2