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.

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())

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.