Analyse JSON Python : un guide simple
JSON (signifie « JavaScript Object Notation ») est un format textuel qui facilite l’échange de données entre différentes applications. Par exemple, une application écrite en C++ s’exécutant sous Windows peut facilement échanger des données JSON avec une application écrite en python et s’exécutant 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 antérieurs basés sur XML.
Il existe des bibliothèques et des boîtes à outils disponibles pour l’analyse et la génération de JSON à partir de presque tous les langages et environnements. Cet article se concentre sur les méthodes et les problèmes qui découlent de l’utilisation de python pour traiter JSON.
quelques exemples JSON
Les entités JSON les plus courantes que vous rencontrerez sont But: un ensemble de mappages clé-valeur au format suivant.
personnes.json :
{
« prénom »: « Alice »,
« lastName »: « Salon »,
« Âge »: 35
}
C’est la façon de représenter un tableau d’objets. Dans cette représentation, chaque élément du tableau est un objet. Vous trouverez ci-dessous un exemple de salaire pour les joueurs de baseball.
salaire.json :
[ {
« year » : 1985,
« teamId » : « ATL »,
« leagueId » : « NL »,
« playerId » : « barkele01 »,
« salary » : 870000
}, {
« year » : 1985,
« teamId » : « ATL »,
« leagueId » : « NL »,
« playerId » : « bedrost01 »,
« salary » : 550000
} ]
Faire une vidéo du jour
Bien sûr, vous pouvez également représenter un tableau de scalaires. Il ressemble à ceci :
[
« hello »,
« world »,
35
]
Analyser JSON en Python
Python fournit json Modules pouvant être utilisés pour analyser JSON et générer JSON à partir d’objets et de listes Python.
L’extrait de code suivant montre comment ouvrir un fichier JSON et charger des données dans des variables.
importer json
Utilisez open(‘sample.json’, ‘r’) comme fp :
obj = json.load(fp)
Lorsque vous avez une chaîne contenant des données JSON, vous pouvez la convertir en objet python (ou liste) avec :
obj = json.loads(« » »{
« prénom »: « Alice »,
« lastName »: « Salon »,
« Âge »: 35
} » » »)
Pour analyser une URL JSON, vous pouvez créer un objet URL à l’aide de urllib2 et utilise json.load() comme avant.
importer urllib2, json
url = urllib2.urlopen(‘http://site.com/sample.json’)
obj = json.load(url)
gérer les erreurs
Lorsque le JSON contient des erreurs, vous obtenez un mauvaise valeurVous pouvez y faire face et prendre des mesures correctives si nécessaire.
essayer:
obj = json.loads(« » »{
« prénom »: « Alice »,
« Nom : « Salon »,
« Âge »: 35
} » » »)
Sauf ValueError :
print(« Erreur lors du chargement de 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.
chat glossary.json
# imprimer
{ « glossary »: { « GlossDiv »: { « GlossList »: { « GlossEntry »: { « GlossDef »: { « GlossSeeAlso »: [« GML », « XML »] »para »: « Un langage de balisage méta utilisé pour créer des langages de balisage tels que DocBook. »}, « GlossSee »: « markup », « Acronym »: « SGML », « GlossTerm »: « Standard Generalized Markup Language » , » Abbrev »: « ISO 8879:1986 », « SortAs »: « SGML », « ID »: « SGML » }}, « title »: « S »}, « title »: « Exemple de glossaire » }}
Pour obtenir la sortie indentée du fichier JSON ci-dessus, vous pouvez procéder comme suit :
python -mjson.tool glossaire.json
# imprimer
{
« Glossaire »:{
« Brillant »:{
« liste brillante »: {
« entrée brillante »: {
« abréviation »: « ISO 8879:1986 »,
« acronyme »: « SGML »,
« Brillant »:{
« GlossSeeAlso »: [
« GML »,
« XML »
],
« para »: « Un langage de balisage méta utilisé pour créer des langages de balisage tels que DocBook. »
},
« GlossSee »: « Marquer »,
« GlossTerm »: « Langage de balisage généralisé standard »,
« ID »: « SGML »,
« sort »: « SGML »
}
},
« titre »: « S »
},
« title »: « Exemple de glossaire »
}
}
Voici comment charger un objet JSON dans python et extraire uniquement ce dont vous avez besoin.
python -c ‘importer json ; fp = open(« glossary.json », « r »); obj = json.load(fp); fp.close(); print(object[« glossary »][« title »]’)
# imprimer
exemple de glossaire
données d’accès
Une fois les données JSON chargées dans une variable python, vous pouvez accéder aux données comme n’importe quel dict python (ou liste, selon le cas). Par exemple, les données JSON ci-dessus sont accessibles comme suit :
prénom = obj[« firstName »]
nom = obj[« Hall »]
âge = objet[« age »]
type de données
Le type de données est automatiquement déterminé à partir des données.Avis âge est analysé comme un entier.
impression(type(objet[« firstName »]), type (objet[« lastName »]), type (objet[« age »]))
# imprimer
La table de conversion suivante est utilisée pour convertir de JSON en python.
Analyser JSON avec une classe personnalisée
Par défaut, un objet JSON est analysé en python DictationParfois, vous devrez peut-être créer automatiquement des objets de vos propres classes à partir de données JSON.Vous pouvez spécifier crochet d’objet Fonctions qui gèrent les conversions. L’exemple ci-dessous montre comment.
Il s’agit d’une classe personnalisée qui représente un personnes.
Humanoïde :
def __init__(self, firstName, lastName, age):
self.firstName = prénom
self.lastName = nom de famille
âge de soi = âge
def __str__(soi) :
return ‘{{« firstName » = « {0} », »lastName » = « {1} », « age » = {2}}}’.format(self.firstName, self.lastName, self.age )
Créez une instance de cette classe en transmettant les paramètres requis comme suit :
personne = personne(« Cristal », « Newell », 27)
Pour créer une instance avec cette classe lors de l’analyse de JSON, vous avez besoin d’un crochet d’objet La fonction est définie comme suit : La fonction reçoit un python Dictation et retourne un objet de la bonne classe.
def obj_creator(d):
personne de retour (d[‘firstName’]ré[‘lastName’]ré[‘age’])
vous pouvez maintenant l’utiliser crochet d’objet Fonction lors de l’appel de l’analyseur JSON.
Utilisez open(‘sample.json’, ‘r’) comme fp :
obj = json.load(fp, object_hook = obj_creator)
imprimer (objet)
# imprimer
{« firstName » = « Alice », « lastName » = « Salle », « age » = 35}
Exemple d’utilisation de JSON
JSON est très populaire en ce moment. De nombreux sites Web et applications SaaS (logiciel en tant que service) fournissent une sortie JSON que les applications peuvent consommer directement. Certains de ceux accessibles au public incluent:
- Débordement de pile/échange de pile. Il s’agit d’une URL qui renvoie une liste de problèmes au format JSON.
- GitHub fournit l’API JSON sur https://developer.github.com/v3/.
- Voici l’API Flickr : https://developer.yahoo.com/flickr/.
Si vous cherchez plus d’exemples sur la façon d’en tirer le meilleur parti, consultez ce guide pour créer un bot de médias sociaux en Python.
Utilisez-vous JSON pour consommer ou servir ? Utilisez-vous Python dans votre pile technologique ? Veuillez expliquer dans les commentaires ci-dessous.
A propos de l’auteur