JSON¶
On utilise le module json
:
Encodage JSON¶
Info
Le module json
produit toujours des objets str
.
Si ensure_ascii
est vrai (par défaut), il est garanti que les caractères non ASCII soient tous échappés sur la sortie. Si ensure_ascii
est faux, ces caractères seront écrits comme tels.
>>> dico = {"toto": "éléphant"}
>>> print(json.dumps(dico))
{"toto": "\u00e9l\u00e9phant"}
>>> print(json.dumps(dico, ensure_ascii=False))
{"toto": "éléphant"}
Il existe des options supplémentaires bien pratiques comme indent
et sort_keys
:
>>> dico = {"b": "world!", "a": "Hello"}
>>> print(json.dumps(dico, indent=4, sort_keys=True))
{
"a": "Hello",
"b": "world!"
}
Décodage JSON¶
>>> texte = '{"toto": "éléphant"}' # texte unicode
>>> json.loads(texte)
{'toto': 'éléphant'} # dictionnaire
>>> type(json.loads(texte))
<class 'dict'>
Encoder un fichier JSON¶
#!/usr/bin/env python3
# -*- coding: utf_8 -*-
import json
dico = {"toto": "éléphant"}
texte = json.dumps(dico, ensure_ascii=False, indent=4)
with open("test.json", mode="w", encoding="utf_8") as mon_fichier:
mon_fichier.write(texte)
Décoder depuis un fichier JSON¶
#!/usr/bin/env python3
# -*- coding: utf_8 -*-
import json
with open("test.json", mode="r", encoding="utf_8", errors="strict") as mon_fichier:
contenu = mon_fichier.read()
dico = json.loads(contenu)
print(dico)