Jaka jest różnica między json.dumps i json.load? [Zamknięte]


Odpowiedzi:


190

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 dumpi loadkonwersji pomiędzy plikami i obiektami, podczas dumpsi loadskonwertować między ciągi i obiektów. Możesz myśleć o sfunkcjach -less jako o opakowaniach wokół sfunkcji:

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

def load(fh):
    return loads(fh.read())

Jest to bardzo pomocne dla mojego zrozumienia. Nadal jestem trochę zdezorientowany, ponieważ myślałem, że wszystko jest obiektem w Pythonie. Czy łańcuch nie byłby obiektem sam w sobie? Jak wtedy mógłbyś nawrócić się między tymi dwoma? Przepraszam za głupie pytanie.
Bowen Liu

Używam objectw 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]
chepner

dumps()- kodowanie do obiektów JSON dump()- zakodowany ciąg znaków zapisany w pliku loads()- dekodowanie ciągu JSON load()- dekodowanie podczas odczytu pliku JSON
Jamil Noyda

74

json 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


10
> json dumps -> zwraca ciąg znaków reprezentujący obiekt json z dyktu. To blisko, ale nie musi to być dykt, który przekazujesz do json.dumps (). Możesz przekazać listę, ciąg znaków lub wartość logiczną ...
Ross
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.