Jaka jest różnica między json.dumps
i json.load
?
Z mojego zrozumienia jeden ładuje JSON do słownika, a inny ładuje do obiektów.
dumps
pobiera obiekt i tworzy ciąg:
>>> a = {'foo': 3}
>>> json.dumps(a)
'{"foo": 3}'
load
wziąłby obiekt plikopodobny, odczytałby dane z tego obiektu i użyłby tego ciągu do stworzenia obiektu:
with open('file.json') as fh:
a = json.load(fh)
Należy pamiętać, że dump
i load
konwersji pomiędzy plikami i obiektami, podczas dumps
i loads
konwertować między ciągi i obiektów. Możesz myśleć o s
funkcjach -less jako o opakowaniach wokół s
funkcji:
def dump(obj, fh):
fh.write(dumps(obj))
def load(fh):
return loads(fh.read())
object
w znaczeniu „czegoś innego niżstr
”. Łańcuch taki jak'"foo"'
jest dekodowany do obiektu Pythona ; ciąg taki jak jest dekodowany do listy Pythona itp.str
'foo'
"[1,2,3]"
[1,2,3]
dumps()
- kodowanie do obiektów JSONdump()
- zakodowany ciąg znaków zapisany w plikuloads()
- dekodowanie ciągu JSONload()
- dekodowanie podczas odczytu pliku JSONjson load -> zwraca obiekt z ciągu znaków reprezentujących obiekt json.
json dumps -> zwraca ciąg znaków reprezentujący obiekt json z obiektu.
załaduj i zrzuć -> czytaj / zapisuj z / do pliku zamiast ciągu
źródło