r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
JSONで自分のデータにアクセスすることができません。何がおかしいのですか?
TypeError: string indices must be integers, not str
json.dumps()
は辞書をjson(dict)オブジェクトではなくstrオブジェクトに変換します。そのため、 json.loads()
methodを使用してstrをdictにロードして使用する必要があります。
Saveメソッドとしてのjson.dumps()
およびretrieveメソッドとしてのjson.loads()
を参照してください。
これは理解を深めるのに役立つコードサンプルです。
import json
r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
loaded_r = json.loads(r)
loaded_r['rating'] #Output 3.5
type(r) #Output str
type(loaded_r) #Output dict
json.dumps()
はPython辞書のJSON文字列表現を返します。 ドキュメントを参照してください
Rはもはや辞書ではなく、文字列なのでr['rating']
はできません
おそらくあなたは以下のようなものを意味しました
r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))
json.dumps()
を使って文字列に変換する必要はありません。
r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))
あなたは辞書オブジェクトから直接値を得ることができます。
Rを辞書として定義すると、うまくいくはずです。
>>> r: dict = {'is_claimed': 'True', 'rating': 3.5}
>>> print(r['rating'])
3.5
>>> type(r)
<class 'dict'>