В чем разница между json.dumps и json.load? [закрыто]

145

В чем разница между json.dumpsи json.load?

Насколько я понимаю, один загружает JSON в словарь, а другой - в объекты.

AnMaree
источник

Ответы:

198

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функциях -less как об оболочках вокруг sфункций:

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

def load(fh):
    return loads(fh.read())
Чепнер
источник
Это очень полезно для моего понимания. Тем не менее я немного сбит с толку, так как думал, что в Python все является объектом. Разве строка не была бы объектом сама по себе? Как тогда вы могли конвертировать между ними? Простите за глупый вопрос.
Боуэн Лю
Я использую objectв смысле «нечто отличное от типа str». Строка like '"foo"'декодируется в объект Python ; строка like декодируется в список Python и т. д.str'foo'"[1,2,3]"[1,2,3]
chepner
dumps()- кодирование в объекты JSONdump()loads()load()
Запись
77

json load -> возвращает объект из строки, представляющей объект json.

json dumps -> возвращает строку, представляющую объект json из объекта.

загрузка и дамп -> чтение / запись из / в файл вместо строки

stackhelper101
источник
11
> json dumps -> возвращает строку, представляющую объект json из dict. Это близко, но это не обязательно должен быть указатель, который вы передаете в json.dumps (). Вы можете передать список, строку или логическое значение ..
Росс