Manipuler un json avec python

Qu’est ce que JSON ?

JSON signifie for JavaScript Object Notation

JSON est un format léger pour stocker et transporter des données

JSON est souvent utilisé lorsque des données sont envoyées d’un serveur à une page Web

JSON est “auto-descriptif” et facile à comprendre

Exemple fichier json

Nous avons un fichier nommé test.json Celui-ci contient les données suivantes:

json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[{
  "id": 1,
  "appName": "Bitchip",
  "active": true,
  "appVersion": "0.17",
  "group": "Borer-Larkin",
  "ipv6": "67a4:cf46:7a75:6447:292a:2590:c3ae:cea7"
}, {
  "id": 2,
  "appName": "Tin",
  "active": true,
  "appVersion": "0.7.3",
  "group": "Dibbert, Fisher and Torp",
  "ipv6": "1c33:7a9e:df5e:489b:ebf:abc1:3612:b467"
}, {
  "id": 3,
  "appName": "Ronstring",
  "active": false,
  "appVersion": "2.14",
  "group": "Kessler Inc",
  "ipv6": "65b0:7fc8:9c17:696a:d823:1ab3:bd3e:39c4"
}, {
  "id": 4,
  "appName": "Transcof",
  "active": true,
  "appVersion": "0.37",
  "group": "Metz Group",
  "ipv6": "63a2:c8da:2f5:7b59:d01b:a57c:32bf:f8f3"
}, {
  "id": 5,
  "appName": "Bigtax",
  "active": true,
  "appVersion": "0.22",
  "group": "Johns Inc",
  "ipv6": "b62b:fbe8:b9d3:8593:aa9d:502b:36cc:7bea"
}]

Types de données

JSON

Python

objet

dict

array

list

string

str

number (nombre entier)

int

number (nombre réel)

float

true

True

false

False

null

None

JSON dans Python

Python a un package intégré appelé json, qui peut être utilisé pour travailler avec des données JSON.

Importer le module JSON

python
1
import json

Parser du contenu

Si vous avez une chaîne JSON, vous pouvez l’analyser à l’aide de la méthode json.loads().

python
1
2
3
4
5
6
7
8
import json

# str
x = '{ "id": 1, "appName": "Bitchip", "active": true, "appVersion": "0.17", "group": "Borer-Larkin", "ipv6": "67a4:cf46:7a75:6447:292a:2590:c3ae:cea7" }'

y = json.loads(x)

print(y['appName'])

Lire un fichier JSON

Copier l’exemple en début de l’article dans un fichier nommé test.json

python
1
2
3
4
5
6
7
8
9
10
11
import json

with open('test.json') as jsonFile:
    data = json.load(jsonFile)
    for p in data:
        print('')
        print(f'nom        {p["appName"]}')
        print(f'active     {p["active"]}')
        print(f'version    {p["appVersion"]}')
        print(f'client     {p["group"]}')
        print(f'adr ipv6   {p["ipv6"]}')
nom        Bitchip
active     True
version    0.17
client     Borer-Larkin
adr ipv6   67a4:cf46:7a75:6447:292a:2590:c3ae:cea7

nom        Tin
active     True
version    0.7.3
client     Dibbert, Fisher and Torp
adr ipv6   1c33:7a9e:df5e:489b:ebf:abc1:3612:b467

nom        Ronstring
active     False
version    2.14
client     Kessler Inc
adr ipv6   65b0:7fc8:9c17:696a:d823:1ab3:bd3e:39c4

nom        Transcof
active     True
version    0.37
client     Metz Group
adr ipv6   63a2:c8da:2f5:7b59:d01b:a57c:32bf:f8f3

nom        Bigtax
active     True
version    0.22
client     Johns Inc
adr ipv6   b62b:fbe8:b9d3:8593:aa9d:502b:36cc:7bea

Boucler sur une seule clef

Copier l’exemple plus haut dans un fichier nommé test.json

python
1
2
3
4
5
6
import json

with open('test.json') as jsonFile:
    data = json.load(jsonFile)
    for p in data:
        print(p['appName'])
Bitchip
Tin
Ronstring
Transcof
Bigtax

Modifier le contenu d’un fichier avec sauvegarde

python
1
2
3
4
5
6
7
8
9
10
11
import json

with open('test.json') as jsonFile:
    data = json.load(jsonFile)
    for p in data:
        if p['active']:
            print(f'active {p["appName"]}')
        else:
            print(f'deactivated {p["appName"]}')
            p['active'] = True
    json.dump(data, jsonFile)

Tags :

Catégories :

Mis à jour :