前提・実現したいこと
JSONで配列の入れ子構造に値を書き込もうとしています。
以下のファイルのShiga
に書き込もうとしています。
sample.json
json
1{ 2 "Kansai":{ 3 "Osaka":{ 4 "city":"Osaka", 5 "castle":"Osaka" 6 }, 7 8 "Kyoto":{ 9 "city":"Kyoto", 10 "castle":"Nijo" 11 }, 12 13 "Hyogo":{ 14 "city":"Kobe", 15 "castle":"Himeji", 16 "food":{ 17 "sweets":"gaufre" 18 } 19 }, 20 21 "Shiga":{ 22 23 } 24 } 25}
発生している問題・エラーメッセージ
$ python json_write.py Traceback (most recent call last): File "json_write.py", line 8, in <module> json_data["Kansai"]["Shiga"].append({"city":"Otsu", "castle":"Hikone", "food":{"meat":"Omigyu"}}) AttributeError: 'dict' object has no attribute 'append'
該当のソースコード
python
1import json 2file_path = 'sample.json' 3json_data = {} 4 5with open(file_path, "r") as json_file: 6 json_data = json.load(json_file) 7 8json_data["Kansai"]["Shiga"].append({"city":"Otsu", "castle":"Hikone", "food":{"meat":"Omigyu"}}) 9 10 11with open(file_path, 'w')as outfile: 12 json.dump(json_data, outfile, indent=4)
試したこと
エラーを受けてsample.json
を以下のように変更したところ、今度はJSONの文法エラーが出てしまい、正しく書き込みするにはどのように修正すれば良いかわからない状態です。
Ln 3 Parse error on line 3:<br>...i":[ "Osaka":{ "city":"O<br>----------------------^<br>Expecting 'EOF', '}', ',', ']', got ':'
json
1{ 2 "Kansai":[ 3 "Osaka":{ 4 "city":"Osaka", 5 "castle":"Osaka" 6 }, 7 8 "Kyoto":{ 9 "city":"Kyoto", 10 "castle":"Nijo" 11 }, 12 13 "Hyogo":{ 14 "city":"Kobe", 15 "castle":"Himeji", 16 "food":{ 17 "sweets":"gaufre" 18 } 19 }, 20 21 "Shiga":{ 22 23 } 24 ] 25}
以下のjsonフォーマットでは、jsonファイルとしてのエラーは出ませんでしたが、実行するとエラーになってしまいました。
$ python json_write.py Traceback (most recent call last): File "json_write.py", line 8, in <module> json_data["Kansai"]["Shiga"].append({"city":"Otsu", "castle":"Hikone", "food":{"meat":"Omigyu"}}) TypeError: list indices must be integers or slices, not str
sample.json
{ "Kansai":[ {"Osaka":{ "city":"Osaka", "castle":"Osaka" }, "Kyoto":{ "city":"Kyoto", "castle":"Nijo" }, "Hyogo":{ "city":"Kobe", "castle":"Himeji", "food":{ "sweets":"gaufre" } }, "Shiga":{ } } ] }
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
参考にしている記事
JSONで配列の入れ子構造や値の取得方法などをPythonを使って説明!
Python - JSONファイル読み書きする方法
回答1件
あなたの回答
tips
プレビュー