JSON est l'abréviation de JavaScript Object Notation. Il est non seulement léger, mais aussi facile à lire et à écrire pour les humains. De même, les machines le trouvent facile à analyser et à générer. L'analyse JSON est extrêmement importante pour tout développeur Python lorsqu'il travaille avec des données provenant d'API, de fichiers de configuration ou d'autres sources d'informations stockées. Cet article vous présente les procédures de base pour analyser JSON à l'aide du module JSON de Python.
JSON représente les données sous forme de paires clé-valeur, à l'instar d'un dictionnaire Python. Voici un exemple de base d'un objet JSON :
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"]
}
Cet objet JSON comprend une chaîne de caractères, un nombre, un booléen et un tableau. La compréhension de cette structure est fondamentale pour analyser et manipuler les données JSON en Python.
Le module json de Python simplifie l'analyse des chaînes et des fichiers JSON. Ce module comprend des méthodes telles que json.loads() pour lire JSON à partir d'une chaîne, et json.load() pour lire JSON à partir d'un fichier. Inversement, json.dumps() et json.dump() sont utilisées pour écrire JSON dans une chaîne et un fichier, respectivement.
Il existe plusieurs façons de lire des données JSON, que nous allons examiner par la suite.
Pour lire des données JSON à partir d'une chaîne, utilisez la méthode json.loads() :
import json
json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)
print(data)
Sortie:
Pour lire des données JSON à partir d'un fichier, utilisez la méthode json.load() :
import json
with open('data.json', 'r') as file:
data = json.load(file)
print(data)
Sortie:
Voici différentes façons d'écrire des données JSON :
Pour écrire des données JSON dans une chaîne, utilisez la méthode json.dumps() :
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
json_string = json.dumps(data)
print(json_string)
Sortie:
Pour écrire des données JSON dans un fichier, utilisez la méthode json.dump() :
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
with open('data.json', 'w') as file:
json.dump(data, file)
Les objets JSON imbriqués sont courants lorsqu'on travaille avec des structures de données plus complexes. Python peut facilement gérer ces structures imbriquées.
import json
nested_json_string = '''
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"],
"address": {
"street": "123 Main St",
"city": "Wonderland"
}
}
'''
data = json.loads(nested_json_string)
print(data['address']['city'])
Sortie:
Parfois, vous devez convertir des objets Python personnalisés en JSON. Cela nécessite un encodeur personnalisé.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
class StudentEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Student):
return obj.__dict__
return super().default(obj)
student = Student("Alice", 30, False)
json_string = json.dumps(student, cls=StudentEncoder)
print(json_string)
Sortie:
De même, pour décoder des données JSON en objets Python personnalisés, vous avez besoin d'un décodeur personnalisé.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
def student_decoder(dct):
return Student(dct['name'], dct['age'], dct['is_student'])
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
student = json.loads(json_string, object_hook=student_decoder)
print(student.name)
Sortie:
Travailler avec des données JSON peut conduire à plusieurs erreurs courantes, notamment lors de l'analyse, de la génération ou de l'accès aux données JSON. Voici quelques-unes des plus courantes :
Une erreur fréquente lors de l'analyse JSON est la rencontre d'un format JSON non valide. JSON nécessite des guillemets doubles autour des clés et des valeurs de chaîne, ainsi qu'une imbrication correcte des crochets et des accolades.
import json
invalid_json_string = "{'name': 'Alice', 'age': 30, 'is_student': False}"
try:
data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
print(f"Invalid JSON format: {e}")
Sortie:
Lors de l'analyse des données JSON, vous pouvez rencontrer des clés manquantes. Utilisez la méthode get pour fournir une valeur par défaut si une clé est manquante.
import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)
Utilisez le module pdb pour définir des points d'arrêt et déboguer votre code d'analyse JSON.
import json
import pdb
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)
Le web scraping implique souvent l'extraction de données à partir d'API web qui renvoient des réponses JSON. Voici un exemple compact utilisant la bibliothèque requests et le point de terminaison https://httpbin.org/anything.
Tout d'abord, assurez-vous que la bibliothèque requests est installée :
pip install requests
Ce code importe requests pour les requêtes HTTP et json pour la gestion des données JSON. Il envoie une requête GET à l'URL cible en utilisant requests.get(url) et analyse la réponse JSON avec response.json(), la transformant en un dictionnaire Python. Nous extrayons et imprimons des données particulières telles que les en-têtes, l'agent utilisateur, l'origine et l'URL.
Le code contient une solide gestion des erreurs ; il capture json.JSONDecodeError lorsqu'une erreur de décodage JSON se produit, et KeyError lorsqu'une clé spécifique est absente, ce qui permet au programme d'être protégé contre les plantages dus à l'absence de données. Cette robustesse du code lui permet donc de gérer parfaitement les tâches réelles de web scraping.
import requests
import json
url = 'https://httpbin.org/anything'
response = requests.get(url)
try:
data = response.json()
# Extraire des données spécifiques de la réponse JSON
headers = data['headers']
user_agent = headers.get('User-Agent', 'N/A')
origin = data.get('origin', 'N/A')
url = data.get('url', 'N/A')
print(f"User Agent: {user_agent}")
print(f"Origin: {origin}")
print(f"URL: {url}")
except json.JSONDecodeError:
print("Error decoding JSON response")
except KeyError as e:
print(f"Key error: {e} not found in the JSON response")
Tout codeur Python doit savoir comment analyser JSON. Grâce au module JSON et à la meilleure façon de le faire mise en évidence par ce manuel, vous serez en mesure de lire, d'écrire et de déboguer des données JSON assez rapidement. Cela implique que vous testiez régulièrement vos codes et que vous utilisiez les bons outils et les fonctionnalités les plus récentes disponibles dans Python pour améliorer vos compétences en matière de manipulation de JSON.
Lorsque vous effectuez du web scraping, l'analyse JSON est importante, étant donné que les données extraites des API web apparaissent généralement sous la forme de JSON. En outre, vous pouvez extraire des informations de diverses sources web de manière efficace si vous savez analyser et manipuler les données JSON de manière adéquate.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Commentaires: 0