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.

AnMaree
la source

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())
chepner
la source
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

stackhelper101
la source
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