r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
Não consigo acessar meus dados no JSON. O que estou fazendo errado?
TypeError: string indices must be integers, not str
r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
Não consigo acessar meus dados no JSON. O que estou fazendo errado?
TypeError: string indices must be integers, not str
Respostas:
json.dumps()
converte um dicionário em str
objeto, não um json(dict)
objeto! Então você tem que carregar seu str
em um dict
para usá-lo usando o json.loads()
método
Veja json.dumps()
como um método de salvamento e json.loads()
como um método de recuperação.
Este é o exemplo de código que pode ajudá-lo a entender mais:
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()
retorna a representação de string JSON do dict python. Veja os documentos
Você não pode fazer r['rating']
porque r é uma string, não um ditado
Talvez você quisesse dizer algo como
r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))
Não há necessidade de convertê-lo em uma string usando json.dumps()
r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))
Você pode obter os valores diretamente do objeto dict.
loaded_r
, considerando que você já o inseriur
?