JSON Python analysant un guide simple
JSON (signifie “Notation d'objet JavaScript”) est un format texte facilitant l’échange de données entre diverses applications. Par exemple, une application écrite en C ++ Procédure de résolution des erreurs d'exécution Windows Visual C ++ Procédure de résolution des erreurs d'exécution Windows Visual C ++ Les erreurs Visual C ++ constituent un problème courant pour les utilisateurs Windows. Mais savez-vous comment les réparer? En lire plus 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 par rapport aux formats précédents basés sur XML..
Des bibliothèques et des boîtes à outils sont disponibles pour analyser et générer du 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 échantillons JSON
L'entité JSON la plus courante que vous rencontrerez est une objet: un ensemble de mappages clé-valeur dans le format indiqué ci-dessous.
person.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. Voici un échantillon des salaires des joueurs de baseball.
salaires.json:
["année": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "barkele01", "salaire": 870000, "année": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "bedrost01", "salaire": 550000]
Bien sûr, vous pouvez également représenter un tableau de scalaires. Cela ressemble à ceci:
["bonjour", "monde", 35]
Analyse JSON en Python
Python Comment obtenir la communication entre Python et JavaScript à l'aide de JSON Comment obtenir la communication entre Python et JavaScript à l'aide de JSON Aujourd'hui, je vais vous montrer comment utiliser JSON pour envoyer des données JavaScript à Python. Je vais expliquer comment installer un serveur Web, ainsi que tout le code dont vous avez besoin. Lire la suite fournit la 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..
importer json avec open ('sample.json', 'r') en tant que fp: obj = json.load (fp)
Lorsque vous avez une chaîne contenant les données JSON, vous pouvez la convertir en objet (ou en liste) python avec les éléments suivants:
obj = json.loads ("" "" firstName ":" Alice "," lastName ":" Hall "," age ": 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)
Gestion des erreurs
Quand le JSON a des erreurs, vous aurez un ValueError. Vous pouvez le gérer et prendre des mesures correctives si nécessaire.
try: obj = json.loads ("" "" firstName ":" Alice "," lastName: "Hall", "age": 35 "" ") sauf ValueError: print" erreur de chargement de JSON "
Analyse JSON à partir de la ligne de commande
Parfois, il est utile d’analyser JSON en utilisant la ligne de commande python, peut-être pour vérifier les erreurs ou pour obtenir une sortie bien en retrait..
cat glossary.json # prints "glossary": "GlossDiv": "GlossList": "GlossEntry": "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Langage méta-markup, utilisé pour créer des langages de marquage tels que DocBook.", "GlossSee": "balisage", "Acronyme": "SGML", "GlossTerm": "Langage de balisage généralisé standard", "Abbrev": "ISO 8879: 1986", "SortAs": "SGML", "ID": "SGML", "titre": "S", "titre": "exemple de glossaire"
Pour obtenir une sortie en retrait du fichier JSON ci-dessus, vous pouvez procéder comme suit:
python -mjson.tool glossary.json # prints "glossary": "GlossDiv": "GlossList": "GlossEntry": "Code abrégé": "ISO 8879: 1986", "Acronyme": "SGML", "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Un langage méta-markup, utilisé pour créer des langages de balisage tels que DocBook." , "GlossSee": "balisage", "GlossTerm": "Langage de balisage généralisé standard", "ID": "SGML", "SortAs": "SGML", "titre": "S", "titre ":" exemple de glossaire "
Et voici comment charger l’objet JSON dans python et n’extraire que ce dont vous avez besoin.
python -c 'import json; fp = open ("glossary.json", "r"); obj = json.load (fp); fp.close (); print obj ["glossary"] ["title"] '# imprime un glossaire
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 le cas échéant). Par exemple, les données JSON ci-dessus sont accessibles comme suit:
firstName = obj ["prénom"] lastName = obj ["hall"] age = obj ["age"]
Types de données
Les types de données sont automatiquement déterminés à partir des données. Notez que âge est analysé comme un entier.
type d'impression (obj ["prénom"]), type (obj ["nom"]), type (obj ["age"]) # impressions
La table de conversion suivante est utilisée pour convertir de JSON en python..
Analyse 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_hook fonction qui gère la conversion. L'exemple suivant montre comment.
Voici une classe personnalisée représentant un La personne.
classe Personne: def __init __ (self, prenom, lastName, age): self.firstName = prenom 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 transmettant les arguments requis comme suit:
personne = personne ("Crystal", "Newell", 27)
Pour utiliser cette classe afin de créer des instances lors de l’analyse JSON, vous avez besoin d’un objet_hook fonction définie comme suit: la fonction reçoit un python dict et retourne un objet de la classe correcte.
def obj_creator (d): return Person (d ['prenom'], d ['nom'], d ['age'])
Vous pouvez maintenant utiliser cette objet_hook fonction lors de l'appel de l'analyseur JSON.
avec open ('sample.json', 'r') comme 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 (logiciel en tant que service) offrent une sortie JSON pouvant être utilisée directement par les applications. Parmi ceux disponibles publiquement, 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/.
Utilisez-vous JSON pour consommer ou fournir des services? Et utilisez-vous python dans votre pile technologique? Ne pas expliquer dans les commentaires ci-dessous.
En savoir plus sur: Programmation, Python.