Qual é a diferença entre json.dumps e json.load? [fechadas]

143

Qual é a diferença entre json.dumpse json.load?

Pelo que entendi, um carrega JSON em um dicionário e outro carrega em objetos.

AnMaree
fonte

Respostas:

190

dumps pega um objeto e produz uma string:

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

load pegaria um objeto parecido com um arquivo, leria os dados desse objeto e usaria essa sequência para criar um objeto:

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

Observe que dumpe loadconverta entre arquivos e objetos, enquanto dumpse loadsconverte entre strings e objetos. Você pode pensar nas sfunções -less como wrappers em torno das sfunções:

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

def load(fh):
    return loads(fh.read())
chepner
fonte
Isso é muito útil para minha compreensão. Ainda estou um pouco confuso, pois pensei que tudo é um objeto em Python. A string não seria um objeto em si? Como você pode converter entre os dois então? Desculpe pela pergunta boba.
22818 Bowen Liu
Estou usando objectno sentido de "algo de um tipo diferente de str". Uma string como '"foo"'é decodificada para o objeto Python ; uma string como é decodificado à lista Python , etc.str'foo'"[1,2,3]"[1,2,3]
chepner
dumps()- codificação para objetos JSON dump()- gravação de seqüência de caracteres codificada no arquivo loads()- decodificação da seqüência de caracteres JSON load()- decodificação enquanto o arquivo JSON é lido
Jamil Noyda
74

json load -> retorna um objeto de uma string que representa um objeto json.

json dumps -> retorna uma string representando um objeto json de um objeto.

load and dump -> leitura / gravação de / para arquivo em vez de string

stackhelper101
fonte
10
> json dumps -> retorna uma string representando um objeto json de um dict. Está perto, mas não precisa ser um ditado que você transmite para json.dumps (). Você pode passar uma lista, ou uma string, ou um booleano ..
Ross