Maison  >  Article  >  développement back-end  >  Comment traiter les données JSON à l'aide de Python

Comment traiter les données JSON à l'aide de Python

青灯夜游
青灯夜游original
2018-11-14 14:37:503315parcourir

Comment utiliser Python pour traiter les données JSON ? Cet article vous présentera les méthodes de base d'utilisation de Python pour traiter les données JSON. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Avant d'introduire les méthodes de base d'utilisation de Python pour traiter les données JSON, nous devons d'abord comprendre Qu'est-ce que JSON ?

JSON signifie "JavaScript Object Notation", qui peut être considéré comme un "format de données basé sur les symboles du langage JavaScript". Cependant, cette notation est uniquement basée sur JavaScript et peut être utilisée dans divers autres langages.

JSON est un moyen de stocker et d'échanger des données, implémenté via sa syntaxe et utilisé dans de nombreuses applications Web. L'avantage de JSON est qu'il a un format lisible par l'homme, ce qui peut être l'une des raisons de son utilisation dans le transfert de données, en plus de son efficacité dans l'utilisation des API.

En JSON, les données sont représentées par des paires nom/valeur ; les objets sont stockés entre accolades, chaque nom est suivi de ':' (deux-points) et les paires nom/valeur sont séparées par (virgule) ; des crochets entourent le tableau, avec des valeurs séparées par (virgule).

Exemple de données au format JSON :

{
 "book1":{
"title": "Python Beginners",
 "year": 2005 ,
"page": 399
},
"book2":{
 "title": "Python Developers",
 "year": 2006 ,
"page": 650
 }
}

Examinons de plus près comment traiter les données JSON en Python.

Python facilite le traitement des données JSON. Le module qui y parvient est le module json. Ce module doit être inclus dans l'installation de Python (intégrée), vous n'avez donc pas besoin d'installer de modules externes comme vous le faites avec les fichiers PDF et Excel. Pour utiliser ce module, il suffit de l'importer (commencez par écrire) :

import json

Mais que fait la librairie JSON ? Cette bibliothèque analyse principalement le JSON à partir de fichiers ou de chaînes. Il analyse également JSON en dictionnaire ou en liste en Python et vice versa, c'est-à-dire convertit le dictionnaire ou la liste Python en chaîne JSON.

Lecture de JSON (JSON vers Python)

Lire JSON signifie convertir JSON en valeurs Python (objets). Comme mentionné ci-dessus, la bibliothèque json analyse JSON dans un dictionnaire ou une liste en Python. Pour cela, nous utilisons la fonction loads() (load from string) comme indiqué ci-dessous :

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

Si vous voulez voir le résultat, imprimez jsonToPython, dans ce cas, vous obtiendrez le résultat suivant :

{'age': 39, 'name': 'Frank'}

Autrement dit, les données sont renvoyées sous forme de dictionnaire Python (structure de données d'objet JSON).

Python vers JSON

Dans la section précédente, nous avons présenté JSON en Python, dans cette section, nous allons vous montrer comment convertir les valeurs Python ( encodé) au format JSON.

Supposons que nous ayons le dictionnaire suivant en Python :

import json
pythonDictionary = {'name':'Bob', 'age':44, 'isEmployed':True}
dictionaryToJson = json.dumps(pythonDictionary)

Si nous exécutons printdictionaryToJson, nous obtenons les données JSON suivantes :

{"age": 44, "isEmployed": true, "name": "Bob"}

Par conséquent, cette sortie est traité comme une représentation de données d'un objet (dictionnaire). La méthode dumps() est la clé de ce type d’opération.

Il convient de noter à ce stade que JSON ne peut pas stocker tous les types d'objets Python et ne peut stocker que les types suivants : Liste ; Numéro ; Par conséquent, tous les autres types doivent être convertis pour le stockage en JSON.

Supposons que nous ayons la classe suivante :

class Employee(object):
    def __init__(self, name):
        self.name = name

Supposons que nous créions un nouvel objet comme suit :

abder = Employee('Abder')

Si nous voulons convertir cet objet en JSON , ce qu'il faut faire? Est-ce que c'est json.dumps(abder) ? Dans ce cas, vous recevrez une erreur similaire à la suivante :

Traceback (most recent call last):
  File "test.py", line 8, in <module>
    abderJson = json.dumps(abder)
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 243, in dumps
    return _default_encoder.encode(obj)
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 184, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <__main__.Employee object at 0x10e74b750> is not JSON serializable

Mais existe-t-il une solution de contournement ? Heureusement, il y en a. Pour résoudre ce problème, nous pouvons définir une méthode similaire à :

def jsonDefault(object):
    return object.__dict__

puis encoder l'objet en JSON comme ceci :

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

Si vous exécutez print jsonAbder, vous devriez obtenez le résultat suivant :

{"name": "Abder"}

Nous avons maintenant codé l'objet Python (abder) en JSON.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn