Чим відрізняється json.dumps від json.load? [зачинено]


143

У чому різниця між json.dumpsі json.load?

З мого розуміння, один завантажує JSON у словник, а інший завантажує в об’єкти.

Відповіді:


190

dumps бере об’єкт і виробляє рядок:

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

load візьме файл-подібний об'єкт, прочитає дані з цього об’єкта і використає цей рядок для створення об'єкта:

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

Зверніть увагу , що dumpі loadперетворення між файлами і об'єктами, в той час як dumpsі loadsперетворюють між рядками і об'єктами. Ви можете думати про без- sфункції як обгортки навколо sфункцій:

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

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

Це дуже корисно для мого розуміння. Я все-таки трохи розгублений, бо думав, що в Python все є об’єктом. Чи не буде рядок сам по собі об'єктом? Як ви могли тоді конвертувати між двома? Вибачте за дурне запитання.
Боуен Лю

Я використовую objectв значенні "щось інше, ніж str". Рядок на зразок '"foo"'декодується об'єкту Python ; рядок на зразок декодується до списку Python тощо.str'foo'"[1,2,3]"[1,2,3]
chepner

dumps()- кодування до об'єктів JSON dump()- кодування рядків у файл loads()- декодування рядка JSON load()- декодування під час читання файлу JSON
Джаміль Нойда

74

json load -> повертає об'єкт із рядка, що представляє об'єкт json.

json dumps -> повертає рядок, що представляє об'єкт json від об'єкта.

завантажити та скинути -> читати / писати з / у файл замість рядка


10
> json dumps -> повертає рядок, що представляє об'єкт json з dict. Це близько, але це не повинно бути диктом, який ви передаєте в json.dumps (). Ви можете передати список, або рядок, або булева ..
Росс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.