Analyse JSON Python : un guide simple

Analyse JSON Python : un guide simple

JSON (acronyme de « JavaScript Object Notation ») est un format basé sur du texte qui facilite l'échange de données entre diverses applications. Par exemple, une demande écrit en C++ fonctionnant sous Windows peut facilement échanger des données JSON avec une application écrite en python et fonctionnant sous Linux. Sa simplicité et sa flexibilité ont conduit à une utilisation généralisée ces dernières années, en particulier de préférence aux formats XML antérieurs.





Il existe des bibliothèques et des boîtes à outils disponibles pour analyser et générer JSON à partir de presque tous les langages et environnements. Cet article se concentre sur les méthodes et les problèmes liés au traitement de JSON à l'aide de python.





Quelques exemples JSON

L'entité JSON la plus courante que vous rencontrerez est un objet : un ensemble de mappages clé-valeur au format indiqué ci-dessous.





Windows Media Player Alternative Windows 10

personne.json :

{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}

Voici comment vous pouvez représenter un tableau d'objets. Dans cette représentation, chaque élément du tableau est un objet. Ce qui suit est un échantillon des salaires des joueurs de baseball.



salaires.json :

[ {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'barkele01',
'salary' : 870000
}, {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'bedrost01',
'salary' : 550000
} ]

Bien sûr, vous pouvez également représenter un tableau de scalaires. Cela ressemble à ceci :





[
'hello',
'world',
35
]

Analyser JSON en Python

Python fournit le json module qui peut être utilisé à la fois pour analyser JSON, ainsi que pour générer du JSON à partir d'objets et de listes python.

L'extrait de code suivant montre comment ouvrir un fichier JSON et charger les données dans une variable.





import json
with open('sample.json', 'r') as fp:
obj = json.load(fp)

Lorsque vous avez une chaîne contenant les données JSON, vous pouvez la convertir en objet python (ou liste) avec les éléments suivants :

comment configurer une wii
obj = json.loads('''{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}''')

Pour analyser une URL JSON, vous pouvez créer un objet URL en utilisant urllib2 et utilise json.load() comme avant.

import urllib2, json
url = urllib2.urlopen('http://site.com/sample.json')
obj = json.load(url)

Gestion des erreurs

Lorsque le JSON a des erreurs, vous obtiendrez un Erreur de valeur . Vous pouvez le gérer et prendre des mesures correctives si nécessaire.

try:
obj = json.loads('''{
'firstName': 'Alice',
'lastName: 'Hall',
'age': 35
}''')
except ValueError:
print('error loading JSON')

Analyser JSON à partir de la ligne de commande

Parfois, il est utile d'analyser JSON à l'aide de la ligne de commande python, peut-être pour vérifier les erreurs ou pour obtenir une sortie bien indentée.

cat glossary.json
# prints
{'glossary': {'GlossDiv': {'GlossList': {'GlossEntry': {'GlossDef': {'GlossSeeAlso': ['GML', 'XML'], 'para': 'A meta-markup language, used to create markup languages such as DocBook.'}, 'GlossSee': 'markup', 'Acronym': 'SGML', 'GlossTerm': 'Standard Generalized Markup Language', 'Abbrev': 'ISO 8879:1986', 'SortAs': 'SGML', 'ID': 'SGML'}}, 'title': 'S'}, 'title': 'example glossary'}}

Pour obtenir une sortie en retrait à partir du fichier JSON ci-dessus, vous pouvez procéder comme suit :

python -mjson.tool glossary.json
# prints
{
'glossary': {
'GlossDiv': {
'GlossList': {
'GlossEntry': {
'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {
'GlossSeeAlso': [
'GML',
'XML'
],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'
},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'SGML',
'SortAs': 'SGML'
}
},
'title': 'S'
},
'title': 'example glossary'
}
}

Et voici comment vous pouvez charger l'objet JSON en python et extraire uniquement ce dont vous avez besoin.

python -c 'import json; fp = open('glossary.json', 'r'); obj = json.load(fp); fp.close(); print(obj['glossary']['title']')
# prints
example glossary

Accéder aux données

Une fois que vous avez chargé les données JSON dans une variable python, vous pouvez accéder aux données comme vous le feriez avec n'importe quel dict python (ou liste selon le cas). Par exemple, les données JSON ci-dessus sont accessibles comme suit :

firstName = obj['firstName']
lastName = obj['Hall']
age = obj['age']

Types de données

Les types de données sont automatiquement déterminés à partir des données. Noter que âge est analysé comme un entier.

print(type(obj['firstName']), type(obj['lastName']), type(obj['age']))
# prints

La table de conversion suivante est utilisée pour convertir de JSON en python.

Analyser JSON à l'aide d'une classe personnalisée

Par défaut, un objet JSON est analysé dans un python dict . Parfois, vous pouvez avoir besoin de créer automatiquement un objet de votre propre classe à partir des données JSON. Vous pouvez le faire en spécifiant un objet_crochet fonction qui gère la conversion. L'exemple suivant montre comment.

Voici une classe personnalisée représentant un Personne .

class Person:
def __init__(self, firstName, lastName, age):
self.firstName = firstName
self.lastName = lastName
self.age = age
def __str__(self):
return '{{'firstName' = '{0}','lastName' = '{1}', 'age' = {2}}}'.format(self.firstName, self.lastName, self.age)

Une instance de cette classe est créée en passant les arguments requis comme suit :

person = Person('Crystal', 'Newell', 27)

Pour utiliser cette classe pour créer des instances lors de l'analyse JSON, vous avez besoin d'un objet_crochet fonction définie comme suit : La fonction reçoit un python dict et renvoie un objet de la classe correcte.

def obj_creator(d):
return Person(d['firstName'], d['lastName'], d['age'])

Vous pouvez maintenant l'utiliser objet_crochet fonction lors de l'appel de l'analyseur JSON.

with open('sample.json', 'r') as fp:
obj = json.load(fp, object_hook = obj_creator)
print(obj)
# prints
{'firstName' = 'Alice','lastName' = 'Hall', 'age' = 35}

Exemples d'utilisation de JSON

JSON est extrêmement populaire de nos jours. De nombreux sites Web et applications SaaS (Software As A Service) offrent une sortie JSON qui peut être consommée directement par les applications. Parmi ceux qui sont accessibles au public, citons :

  • StackOverflow/StackExchange. Voici une URL qui renvoie une liste de questions au format JSON.
  • GitHub propose une API JSON à l'adresse https://developer.github.com/v3/.
  • Et voici l'API Flickr : https://developer.yahoo.com/flickr/.

Si vous cherchez plus d'exemples sur la façon de l'utiliser à bon escient, consultez ce guide pour construire un bot de médias sociaux en utilisant Python .

google récompense comment obtenir plus d'enquêtes

Utilisez-vous JSON pour consommer ou fournir des services ? Et utilisez-vous python dans votre pile technologique ? Expliquez dans les commentaires ci-dessous.

Partager Partager Tweeter E-mail Cela vaut-il la peine de passer à Windows 11 ?

Windows a été repensé. Mais est-ce suffisant pour vous convaincre de passer de Windows 10 à Windows 11 ?

Lire la suite
Rubriques connexes
  • La programmation
  • La programmation
  • Python
A propos de l'auteur Jay Sridhar(17 articles publiés) Plus de Jay Sridhar

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner