Programmation Python/JSON
La notation objet du langage Javascript JSON (JavaScript Object Notation en anglais) permet de déclarer des données structurées (objets, tableaux, entiers, chaînes de caractères, ...). Les types supportés ont une correspondance avec les types de données Python. Ce format est souvent utilisé dans l'échange de données, ou dans les fichiers de configuration.
Le module json
[modifier | modifier le wikicode]Chaînes de caractères
[modifier | modifier le wikicode]Le module json
possède différentes méthodes permettant la conversion d'une chaîne de caractères au format JSON en données Python et vice-versa.
- La fonction
dumps(data)
convertit des données Python en chaîne de caractères au format JSON (Dump to String). - La fonction
loads(json_string)
convertit une chaîne de caractères au format JSON en données Python (Load from String).
Exemple :
import json
def afficher(data)
print('Données :', data)
print('Données en JSON :', json.dumps(data))
if __name__ == '__main__':
# Données python définies par une notation JSON:
data = json.loads('{"description":"un objet", "total":123, "nombres": [15,7,31,8,62]}')
afficher(data)
# Données python définies par la notation littérale en Python :
data = { 'description': 'un objet', 'total': 123, 'nombres': [15, 7, 31, 8, 62]}
afficher(data)
Syntaxe JSON et types Python
[modifier | modifier le wikicode]La syntaxe JSON semble similaire à celle des types en Python, mais il y a toutefois des différences listées dans le tableau ci-dessous.
Type JSON | Type Python | ||
---|---|---|---|
Chaîne de caractères (toujours des guillemets ") | "chaîne d'exemple"
|
str Chaîne de caractères (guillemets ", apostrophe ', ...)
|
'chaîne d\'exemple'
|
entier | 2024
|
int
|
2024
|
nombre à virgule flottante | 3.14159
|
real
|
3.14159
|
booléen | true
|
bool
|
True
|
tableau | [20, 40, 50]
|
list
|
[20, 40, 50]
|
object | {"titre": "exemple", "numero": 22}
|
dict
|
{"titre": "exemple", "numero": 22}
|
référence nulle | null
|
NoneType
|
None
|
Flux d'entrée-sortie
[modifier | modifier le wikicode]Le module json
permet aussi le décodage d'un flux d'entrée et l'encodage vers un flux de sortie.
- La fonction
dump(data, io)
écrit les données Python au format JSON vers le flux spécifié. - La fonction
load(io)
retourne les données au format JSON lues à partir du flux spécifié.
Exemple avec un flux écrivant/lisant une chaîne de caractères :
from io import StringIO
data = { 'description': 'un objet', 'total': 123, 'nombres': [15, 7, 31, 8, 62]}
io = StringIO()
json.dump(data, io)
print('Données JSON : ', io.getvalue())
io = StringIO('{"description":"un objet", "total":123, "nombres": [15,7,31,8,62]}')
data = json.load(io)
print('Données lues : ', data)