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()将其转换为字符串

r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))

可以直接从dict对象中获取值。

其他回答

JSON .dumps()返回python字典的JSON字符串表示形式。查看文档

你不能用r['rating'],因为r是一个字符串,不再是字典

也许你的意思是

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']))

可以直接从dict对象中获取值。

json.dumps()将字典转换为STR对象,而不是json(dict)对象!因此,您必须通过使用json.loads()方法将您的str加载到字典中才能使用它

请将json.dumps()作为保存方法,将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

将r定义为字典可以达到这个目的:

>>> r: dict = {'is_claimed': 'True', 'rating': 3.5}
>>> print(r['rating'])
3.5
>>> type(r)
<class 'dict'>

在上面的例子中,您可以通过在默认字典中声明一个新字典来创建一个嵌套字典。

import json 
dictionary = {
'fruit':{"Grapes": "10","color": "green"},
'vegetable':{"chilli": "4","color": "red"},
}
result = json.dumps(dictionary, indent = 3)

打印(结果)

这里,我使用了indent=3

参考:https://favtutor.com/blogs/dict-to-json-python