¿Cuál es la diferencia entre json.dumps y json.load? [cerrado]

Respuestas:

190

dumps toma un objeto y produce una cadena:

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

load tomaría un objeto similar a un archivo, leería los datos de ese objeto y usaría esa cadena para crear un objeto:

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

Tenga en cuenta que dumpy loadconvertir entre archivos y objetos, mientras que dumpsy loadsconvertir entre cadenas y objetos. Puede pensar en las sfunciones -less como envoltorios alrededor de las sfunciones:

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

def load(fh):
    return loads(fh.read())
chepner
fuente
Esto es muy útil para mi comprensión. Todavía estoy un poco confundido ya que pensé que todo es un objeto en Python. ¿No sería la cadena un objeto en sí mismo? ¿Cómo podrías convertir entre los dos entonces? Perdón por la tonta pregunta.
Bowen Liu el
Estoy usando objecten el sentido de "algo de un tipo que no sea str". Una cadena como '"foo"'se decodifica al objeto Python ; una cadena como se decodifica a la lista de Python , etcstr'foo'"[1,2,3]"[1,2,3]
chepner
dumps()- codificación de objetos JSON dump()- escritura de cadena codificada en archivo loads()- Decodificar la cadena JSON load()- Decodificar mientras se lee el archivo JSON
Jamil Noyda
74

json carga -> devuelve un objeto de una cadena que representa un objeto json.

json vuelca -> devuelve una cadena que representa un objeto json de un objeto.

cargar y volcar -> leer / escribir desde / al archivo en lugar de cadena

stackhelper101
fuente
10
> json vuelca -> devuelve una cadena que representa un objeto json de un dict. Eso está cerca, pero no tiene que ser un dict que le pasas a json.dumps (). Puede pasar una lista, o una cadena, o un booleano ..
Ross