Comment travailler avec des données JSON avec Python

Ce tutoriel montre à quel point il est facile d’utiliser le langage de programmation Python pour travailler avec des données JSON.

Avant de commencer le sujet, définissons brièvement ce que nous entendons par JSON. Voyons comment le site Web principal de JSON le définit:

JSON (JavaScript Object Notation) est un format léger d’échange de données. Il est facile pour les humains de lire et d'écrire. Il est facile pour les machines d’analyser et de générer. Il est basé sur un sous-ensemble du langage de programmation JavaScript, norme ECMA-262, 3e édition - Décembre 1999. Le format JSON est un format de texte totalement indépendant du langage mais utilisant des conventions familières aux programmeurs de la famille de langages C, y compris le C. , C ++, C #, Java, JavaScript, Perl, Python et bien d’autres. Ces propriétés font de JSON un langage d'échange de données idéal.

JSON est donc un moyen simple de créer et de stocker des structures de données dans JavaScript. La raison pour laquelle vous voyez JavaScript dans l'acronyme est due au fait qu'un objet JavaScript est créé lors du stockage de données avec JSON. Mais ne vous inquiétez pas, vous n'avez pas besoin de connaître JavaScript pour travailler avec des fichiers JSON. Il s'agit plutôt de la syntaxe (format) JSON elle-même..

En bref, JSON est un moyen de stocker et d’échanger des données, grâce à sa syntaxe, qui est utilisée dans de nombreuses applications Web. La bonne chose à propos de JSON est qu’il a un format lisible par l’homme, ce qui peut être l’une des raisons de son utilisation dans la transmission de données, en plus de son efficacité lors de la manipulation d’API..

Voici un exemple de données au format JSON:

"name": "Frank", "age": 39 ans, "isEmployed": true

Dans ce tutoriel, je vais vous montrer comment utiliser Python pour travailler avec des fichiers JSON. Alors, commençons!

Python et JSON

Python simplifie le travail avec les fichiers JSON. Le module utilisé à cet effet est le JSON module. Ce module doit être inclus (intégré) dans votre installation Python. Par conséquent, vous n'avez pas besoin d'installer de module externe, comme nous l'avons fait lors de l'utilisation de fichiers PDF et Excel, par exemple. La seule chose dont vous avez besoin pour utiliser ce module est de l'importer:

importer json

Mais que fait le JSON bibliothèque faire? Cette bibliothèque analyse principalement JSON à partir de fichiers ou de chaînes. Il analyse également JSON dans un dictionnaire ou une liste en Python, et inversement, convertissant un dictionnaire ou une liste Python en chaînes JSON..

JSON en Python

Lire JSON signifie convertir JSON en une valeur (objet) Python. Comme mentionné ci-dessus, le JSON bibliothèque analyse JSON dans un dictionnaire ou une liste en Python. Pour ce faire, nous utilisons le charges() fonction (charge d'une chaîne), comme suit:

importer json jsonData = '"name": "Frank", "age": 39' jsonToPython = json.loads (jsonData)

Si vous voulez voir la sortie, faites un imprimer jsonToPython, Dans ce cas, vous obtiendrez la sortie suivante:

u'age ': 39, u'name': u'Frank '

En d'autres termes, les données sont renvoyées sous forme de dictionnaire Python (structure de données d'objet JSON). Alors, la déclaration print jsonToPython ['name'] renvoyer une sortie? Allez-y, essayez-le.

Python à JSON

Dans la section précédente, nous avons vu comment convertir JSON en une valeur Python (c'est-à-dire un dictionnaire). Dans cette section, je vais vous montrer comment convertir (encoder) une valeur Python en JSON..

Disons que nous avons le dictionnaire suivant en Python:

importer json pythonDictionary = 'name': 'Bob', 'age': 44 ans, 'isEmployed': True dictionaryToJson = json.dumps (pythonDictionary (pythonDictionary)

Si nous imprimer dictionnaireToJson, nous obtenons les données JSON suivantes:

"age": 44 ans, "isEmployed": true, "nom": "Bob"

Donc, cette sortie est considérée comme la représentation de données de l'objet (Dictionnaire). La méthode décharges () était la clé de cette opération.

À ce stade, il est important de noter que JSON ne peut pas stocker tous les types d'objets Python, mais uniquement les types suivants: Listes; Dictionnaires; Les booléens; Nombres; Chaînes de caractères; et aucun. Ainsi, tous les autres types doivent être convertis pour pouvoir être stockés dans JSON..

Disons que nous avons la classe suivante:

class Employee (objet): def __init __ (self, name): self.name = name

Disons que nous avons créé un nouvel objet abder, comme suit:

abder = employé ('Abder')

Et si nous voulions convertir cet objet en JSON? C'est json.dumps (abder)? Dans ce cas, vous obtiendrez une erreur similaire à celle-ci:

Traceback (dernier appel le plus récent): fichier "test.py", ligne 8, dans  abderJson = json.dumps (abder) Fichier "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", ligne 243, in dumps return _default_encoder.encode (obj) Fichier "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", ligne 207, en encode des morceaux = self.iterencode (o, _one_shot = True) Fichier "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , ligne 270, dans iterencode return _iterencode (o, 0) Fichier "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , ligne 184, avec une augmentation par défaut TypeError (repr (o) + "n'est pas sérialisable JSON") TypeError: <__main__.Employee object at 0x10e74b750> n'est pas sérialisable JSON

Mais, y a-t-il une solution de contournement? Heureusement il y en a. J'aime la solution de contournement décrite sur le site Web Python Tips. Pour résoudre ce problème, nous pouvons définir une méthode semblable à la suivante:

def jsonDefault (object): retourne un objet .__ dict__

Encodez ensuite l'objet en JSON comme suit:

jsonAbder = json.dumps (abder, default = jsonDefault)

Si vous imprimer jsonAbder, vous devriez obtenir le résultat suivant:

"nom": "Abder"

Nous avons maintenant encodé un objet Python (abder) en JSON.

Conclusion

À partir de ce tutoriel, nous pouvons constater que Python prouve encore et encore non seulement sa capacité à travailler avec différentes applications, mais également sa flexibilité pour travailler avec différents problèmes tout en travaillant avec une application, comme nous l'avons vu dans la dernière partie du tutoriel..

Si vous voulez en savoir plus sur le JSON module, vous pouvez visiter la page de documentation.

Apprendre JavaScript: le guide complet

Nous avons créé un guide complet pour vous aider à apprendre le JavaScript, que vous soyez débutant en tant que développeur Web ou que vous souhaitiez explorer des sujets plus avancés..

Apprendre le python

Apprenez Python avec notre guide complet de tutoriel sur Python, que vous soyez débutant ou que vous soyez un codeur chevronné cherchant à acquérir de nouvelles compétences..