Was ist der Unterschied zwischen json.dumps und json.load? [geschlossen]

143

Was ist der Unterschied zwischen json.dumpsund json.load?

Nach meinem Verständnis lädt einer JSON in ein Wörterbuch und ein anderer in Objekte.

AnMaree
quelle

Antworten:

190

dumps nimmt ein Objekt und erzeugt eine Zeichenfolge:

>>> a = {'foo': 3}
>>> json.dumps(a)
'{"foo": 3}'

load würde ein dateiähnliches Objekt nehmen, die Daten von diesem Objekt lesen und diese Zeichenfolge verwenden, um ein Objekt zu erstellen:

with open('file.json') as fh:
    a = json.load(fh)

Beachten Sie dies dumpund loadkonvertieren Sie zwischen Dateien und Objekten, während dumpsund loadskonvertieren Sie zwischen Zeichenfolgen und Objekten. Sie können sich die s-less-Funktionen als Wrapper um die sFunktionen vorstellen :

def dump(obj, fh):
    fh.write(dumps(obj))

def load(fh):
    return loads(fh.read())
chepner
quelle
Dies ist sehr hilfreich für mein Verständnis. Trotzdem bin ich ein wenig verwirrt, als ich dachte, dass alles ein Objekt in Python ist. Wäre String nicht ein Objekt für sich? Wie könnten Sie dann zwischen den beiden konvertieren? Entschuldigung für die dumme Frage.
Bowen Liu
Ich benutze objectim Sinne von "etwas von einem anderen Typ als str". Ein String wie '"foo"'wird in das Python- str Objekt dekodiert 'foo'. eine Zeichenfolge wie "[1,2,3]"wird in die Python-Liste [1,2,3]usw. dekodiert
chepner
dumps()- Codierung in JSON-Objekte dump()- Codiertes Schreiben von Zeichenfolgen in Dateien loads()- Dekodieren der JSON-Zeichenfolge load()- Dekodieren beim Lesen der JSON-Datei
Jamil Noyda
74

json load -> gibt ein Objekt aus einer Zeichenfolge zurück, die ein json-Objekt darstellt.

json dumps -> gibt eine Zeichenfolge zurück, die ein json-Objekt von einem Objekt darstellt.

Laden und Speichern -> Lesen / Schreiben von / in Datei anstelle von Zeichenfolge

stackhelper101
quelle
10
> json dumps -> gibt eine Zeichenfolge zurück, die ein json-Objekt aus einem Diktat darstellt. Das ist nah, aber es muss kein Diktat sein, das Sie an json.dumps () übergeben. Sie können eine Liste, eine Zeichenfolge oder einen Booleschen Wert übergeben.
Ross