wake-up-neo.com

Konvertieren des Wörterbuchs in JSON

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

Ich kann im JSON nicht auf meine Daten zugreifen. Was mache ich falsch?

TypeError: string indices must be integers, not str
252
sheetal_158

json.dumps() konvertiert ein Wörterbuch in ein str-Objekt, kein json (dict) -Objekt! Sie müssen also Ihre Zeichenkette in ein Diktat laden, um es mit der Methode json.loads() zu verwenden

Siehe json.dumps() als Sicherungsmethode und json.loads() als Abrufmethode.

Dies ist das Codebeispiel, das Ihnen helfen könnte, es besser zu verstehen:

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
398
Iman Mirzadeh

json.dumps() gibt die JSON-Zeichenfolgendarstellung des python Dikts zurück. Siehe die Dokumentation

Sie können r['rating'] nicht ausführen, da r eine Zeichenfolge und kein Diktat mehr ist

Vielleicht hast du so etwas gemeint

r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))
34
Tim Castelijns

Es muss nicht in einen String konvertiert werden, indem json.dumps() verwendet wird

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

Sie können die Werte direkt vom dict-Objekt abrufen.

2
user3273866

Das Definieren von r als ein Wörterbuch sollte den Trick tun:

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