Quelle est la différence entre json.dumps et json.load? [fermé]


143

Quelle est la différence entre json.dumpset json.load?

D'après ce que je comprends, on charge JSON dans un dictionnaire et un autre dans des objets.

Réponses:


190

dumps prend un objet et produit une chaîne:

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

load prendrait un objet semblable à un fichier, lirait les données de cet objet et utiliserait cette chaîne pour créer un objet:

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

Notez que dumpet loadconvertir entre les fichiers et les objets, tandis que dumpset loadsconvertir entre les chaînes et les objets. Vous pouvez considérer les sfonctions -less comme des wrappers autour des sfonctions:

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

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

Ceci est très utile pour ma compréhension. Je suis encore un peu confus car je pensais que tout était un objet en Python. La chaîne ne serait-elle pas un objet en soi? Comment pourriez-vous convertir entre les deux alors? Désolé pour la question idiote.
— Bowen Liu

J'utilise objectdans le sens de "quelque chose d'un autre type que str". Une chaîne comme '"foo"'est décodée en objet Python ; une chaîne comme est décodée dans la liste Python , etc.str'foo'"[1,2,3]"[1,2,3]
— chepner

dumps()- encodage en objets JSON dump()- écriture de chaîne encodée sur fichier loads()- Décodage de la chaîne JSON load()- Décodage pendant la lecture du fichier JSON
— Jamil Noyda

74

json charges -> renvoie un objet à partir d'une chaîne représentant un objet json.

json dumps -> renvoie une chaîne représentant un objet json à partir d'un objet.

load and dump -> lecture / écriture depuis / vers un fichier au lieu d'une chaîne


10
> json dumps -> renvoie une chaîne représentant un objet json à partir d'un dict. C'est proche, mais ce n'est pas forcément un dict que vous passez à json.dumps (). Vous pouvez passer une liste, ou une chaîne, ou un booléen ..
— Ross
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.