Maison >développement back-end >Tutoriel Python >Travailler avec des fichiers JSON dans Python, avec des exemples
JSON dans Python: un guide complet
JSON (notation d'objet JavaScript) est un format d'échange de données indépendant du langage qui est largement utilisé pour transférer des données entre les clients et les serveurs. Python prend en charge JSON via plusieurs modules, parmi lesquels "JSON" et "Simplejson" sont les plus populaires.
Le module "JSON" intégré de Python fournit des méthodes pour lire et écrire des fichiers JSON. La méthode "json.load ()" est utilisée pour lire les données JSON à partir d'un fichier, et la méthode "json.dump ()" est utilisée pour écrire des données JSON dans un fichier.Les objets Python peuvent être convertis au format JSON via le processus de sérialisation, en utilisant les méthodes "json.dump ()" ou "json.dumps ()". Au lieu de cela, les données JSON peuvent être converties en objets Python via un processus de désérialisation à l'aide des méthodes "json.load ()" ou "json.loads ()".
Les types de données Python et JSON ont des équivalents. Par exemple, le "dict" de Python est équivalent à "l'objet" de JSON, tandis que la "liste" ou "Tuple" de Python équivaut à "Array" de JSON. Cette cartographie facilite le processus de conversion entre Python et JSON.
Dans ce didacticiel, nous apprendrons à lire, écrire et analyser JSON dans Python en utilisant des exemples pertinents. Nous explorerons également les modules communs dans Python pour gérer JSON.
JSON est un format d'échange de données léger. Il s'agit d'un format commun pour transférer et recevoir des données entre les clients et les serveurs. Cependant, son application et son objectif ne se limitent pas à la transmission des données. La machine peut facilement générer et analyser les données JSON. L'acronyme JSON signifie JavaScript Object Notation, comme son nom l'indique, est un sous-ensemble du langage de programmation JavaScript.
JSON est un format d'échange de données standardisé et est indépendant du langage. Presque tous les langages de programmation le soutiennent d'une manière ou d'une autre. Il a la structure suivante:
<code class="language-json">{ "name": "Chinedu Obi", "age": 24, "country": "Nigeria", "languages": [ "Igbo", "English", "Yoruba" ], "marital status": "single", "employee": true, "experience": [ { "title": "Frontend Engineering Intern", "company": "Andela" }, { "title": "Frontend Engineer", "company": "Paystack" } ] }</code>Aux fins des futurs exemples de code, nous supposerons que le JSON ci-dessus est stocké dans un fichier nommé employee.json.
Type de données JSON
Lorsque vous utilisez un objet JSON, Python convertit le type de données JSON en son équivalent et vice versa. Le tableau suivant montre les types de données Python et leurs équivalents JSON.
La différence entre les modules JSON et Simplejson dans Python
Il existe plusieurs modules dans Python pour le codage et le décodage JSON. Les deux modules les plus populaires sont JSON et Simplejson. Le module JSON est un package intégré dans la bibliothèque standard Python, ce qui signifie que nous pouvons l'utiliser directement sans l'installer.
Le module SimpleJSON est un module Python externe pour le codage et le décodage JSON. Il s'agit d'un package open source qui est en arrière compatible avec Python 2.5 et Python 3.3. Il est également rapide, simple, correct et évolutif.SimpleJson est mis à jour plus fréquemment, avec des optimisations mises à jour que JSON, ce qui le rend plus rapide. Si vous utilisez un Python plus ancien en dessous de 2.6 dans votre projet Legacy, Simplejson est votre meilleur pari.
Dans ce tutoriel, nous nous en tiendrons au module JSON.
Comment lire et écrire des fichiers JSON dans Python
Lors de la programmation dans Python, nous rencontrons souvent le format de données JSON, et il est important de comprendre comment lire ou écrire des données et des fichiers JSON. Voici une pré-compréhension du traitement de fichiers dans Python qui aidera à lire et à écrire des fichiers JSON.Comment lire un fichier JSON dans Python
Voir l'exemple de code suivant:
<code class="language-json">{ "name": "Chinedu Obi", "age": 24, "country": "Nigeria", "languages": [ "Igbo", "English", "Yoruba" ], "marital status": "single", "employee": true, "experience": [ { "title": "Frontend Engineering Intern", "company": "Andela" }, { "title": "Frontend Engineer", "company": "Paystack" } ] }</code>Ce qui suit est la sortie du code ci-dessus:
<code class="language-python">import json with open('employee.json', 'r', encoding='utf-8') as file_object: employee_dict = json.load(file_object) print(employee_dict)</code>Dans le code ci-dessus, nous ouvrons le fichier employee.json en mode lecture. La méthode json.load () décode les données JSON dans un dictionnaire Python stocké dans la variable Employee_Dict.
Comment écrire JSON dans un fichier dans Python
Considérez l'extrait de code suivant:
<code>{'name': 'Chinedu Obi', 'age': 24, 'country': 'Nigeria', 'languages': ['Igbo', 'English', 'Yoruba'], 'marital status': 'single', 'employee': True, 'experience': [{'title': 'Frontend Engineering Intern', 'company': 'Andela'}, {'title': 'Frontend Engineer', 'company': 'Paystack'}]}</code>Ici, nous créons une mère de dictionnaire Python avec des données sur la mère fictive. Nous ouvrons Mother.json en mode écriture. Puisqu'il n'y a pas un tel fichier, un fichier sera créé pour nous. La méthode json.dump () code le dictionnaire Python attribué à la variable mère en tant qu'équivalent JSON, qui est écrit dans le fichier spécifié. Après avoir exécuté le code ci-dessus, il apparaîtra dans le répertoire racine de notre dossier, qui contient le fichier mère.json des données JSON.
Comment convertir un dictionnaire Python en JSON (sérialisation)
La sérialisation est le processus de conversion d'un objet Python (dans la plupart des cas un dictionnaire) en données ou chaînes formatées JSON. Lorsqu'il est sérialisé, le type Python est codé comme un équivalent JSON. Le module JSON fournit deux méthodes: json.dump () et json.dumps () - pour sérialiser les objets Python au format JSON.
<code class="language-python">import json mother = { "name": "Asake Babatunde", "age": 28, "marital status": "Married", "children": ["Ayo", "Tolu", "Simi"], "staff": False, "next of kin": {"name": "Babatune Lanre", "relationship": "husband"}, } with open("mother.json", "w", encoding="utf-8") as file_handle: json.dump(mother, file_handle, indent=4)</code>La méthode
<code class="language-python">json.dump(obj, fp, indent)</code>json.dump () a un paramètre FP, tandis que JSON.Dumps () ne le fait pas.
Certaines explications de paramètres:
Encoder l'objet Python en données formatées JSON équivalentes et écrivons-les dans un fichier.
Tout d'abord, nous créons un dictionnaire Python:
<code class="language-json">{ "name": "Chinedu Obi", "age": 24, "country": "Nigeria", "languages": [ "Igbo", "English", "Yoruba" ], "marital status": "single", "employee": true, "experience": [ { "title": "Frontend Engineering Intern", "company": "Andela" }, { "title": "Frontend Engineer", "company": "Paystack" } ] }</code>
Encoder notre dictionnaire en tant que données JSON et écrivons dans un fichier:
<code class="language-python">import json with open('employee.json', 'r', encoding='utf-8') as file_object: employee_dict = json.load(file_object) print(employee_dict)</code>
Dans l'exemple ci-dessus, nous passons le dictionnaire, le pointeur de fichiers et les paramètres d'étramme à la méthode json.dump. Voici la sortie de notre code. Après avoir exécuté le code, le fichier sujet.json contenant les données JSON attendues se trouvera dans notre dossier racine de projet:
<code>{'name': 'Chinedu Obi', 'age': 24, 'country': 'Nigeria', 'languages': ['Igbo', 'English', 'Yoruba'], 'marital status': 'single', 'employee': True, 'experience': [{'title': 'Frontend Engineering Intern', 'company': 'Andela'}, {'title': 'Frontend Engineer', 'company': 'Paystack'}]}</code>
Notre sortie a une belle impression car nous avons ajouté un paramètre de retrait avec une valeur de 4.
Dans cet exemple, nous codant pour l'objet Python en tant que chaîne JSON. Nous avons déjà créé un dictionnaire de sujets, afin que nous puissions le réutiliser ici.
Prenons la méthode json.dumps () comme exemple:
<code class="language-python">import json mother = { "name": "Asake Babatunde", "age": 28, "marital status": "Married", "children": ["Ayo", "Tolu", "Simi"], "staff": False, "next of kin": {"name": "Babatune Lanre", "relationship": "husband"}, } with open("mother.json", "w", encoding="utf-8") as file_handle: json.dump(mother, file_handle, indent=4)</code>
Ce qui suit est la sortie du code ci-dessus:
<code class="language-python">json.dump(obj, fp, indent)</code>
Comme mentionné précédemment, la méthode JSON.Dumps () est utilisée pour convertir les objets Python en chaînes au format JSON. Nous pouvons voir sur la console que nos données JSON ont le type Str.
Comment convertir JSON en dictionnaire Python (désérialisation)
La désérialisation de JSON est de décoder un objet JSON dans un objet Python ou un type Python équivalent. Nous pouvons utiliser deux méthodes fournies par le module JSON - json.load () et json.loads () - pour convertir des données formatées JSON en objets Python.
Veuillez noter la syntaxe suivante:
<code class="language-python">json.dumps(obj, indent)</code>
<code class="language-python">import json subject = { "name": "Biology", "teacher": {"name": "Nana Ama", "sex": "female"}, "students_size": 24, "elective": True, "lesson days": ["Tuesday", "Friday"], }</code>
json.dump () a un paramètre FP, et JSON.Dumps () a un paramètre. D'autres paramètres restent inchangés.
Certaines explications de paramètres:
Ce qui suit est le contenu d'un nouveau fichier JSON nommé Students.json:
<code class="language-python">with open('subject.json', 'w', encoding='utf-8') as file_handle: json.dump(subject, file_handle, indent=4)</code>
Dans cet exemple, nous décoderons les données JSON du fichier Students.json à un objet Python:
<code class="language-json">{ "name": "Biology", "teacher": { "name": "Nana Ama", "sex": "female" }, "students_size": 24, "elective": true, "lesson days": [ "Tuesday", "Friday" ] }</code>
Ce qui suit est la sortie du code ci-dessus:
<code class="language-python">json_data = json.dumps(subject, indent=4) print(json_data) print(type(json_data))</code>
Dans l'extrait de code ci-dessus, un fichier JSON contenant la liste des étudiants est analysé. Les données JSON du fichier file_handle sont transmises à la méthode json.load (), qui les décode en une liste de dictionnaires Python. Imprimez ensuite l'élément de liste sur la console.
Dans cet exemple, décodons les données JSON du point de terminaison de l'API du JSONPlaceholder. Avant de continuer avec cet exemple, le module de demande doit être installé:
<code class="language-json">{ "name": "Chinedu Obi", "age": 24, "country": "Nigeria", "languages": [ "Igbo", "English", "Yoruba" ], "marital status": "single", "employee": true, "experience": [ { "title": "Frontend Engineering Intern", "company": "Andela" }, { "title": "Frontend Engineer", "company": "Paystack" } ] }</code>
Ce qui suit est la sortie du code ci-dessus:
<code class="language-python">import json with open('employee.json', 'r', encoding='utf-8') as file_object: employee_dict = json.load(file_object) print(employee_dict)</code>
Dans le code Python ci-dessus, nous obtenons la réponse du point de terminaison qui renvoie la chaîne formatée JSON. Nous passons la réponse en tant que paramètre à la méthode JSON.loads (), la décoche dans un dictionnaire Python.
Conclusion
Dans le développement Web moderne, JSON est le format réel pour l'échange de données entre un serveur et une application Web. Aujourd'hui, les points de terminaison API REST renvoient les données au format JSON, il est donc important de comprendre comment utiliser JSON.
Python a des modules tels que JSON et Simplejson pour la lecture, l'écriture et l'analyse de JSON. Le module JSON est fourni avec la bibliothèque standard Python, et SimpleJSON est un package externe qui doit être installé avant utilisation.
Lors de la construction d'une API RESTful dans Python ou de l'utilisation d'une API externe dans notre projet, nous devons souvent sérialiser les objets Python à JSON et les désérialiser à Python. Les méthodes démontrées dans cet article sont utilisées par de nombreux projets populaires. Les étapes sont généralement les mêmes.
(Le code de ce tutoriel peut être trouvé sur github.)
FAQ sur JSON dans Python (FAQ)
En raison du module JSON, l'analyse JSON dans Python est un processus simple. Vous pouvez analyser les chaînes JSON à l'aide de la fonction json.loads (). Voici un exemple:
<code>{'name': 'Chinedu Obi', 'age': 24, 'country': 'Nigeria', 'languages': ['Igbo', 'English', 'Yoruba'], 'marital status': 'single', 'employee': True, 'experience': [{'title': 'Frontend Engineering Intern', 'company': 'Andela'}, {'title': 'Frontend Engineer', 'company': 'Paystack'}]}</code>
Dans ce code, json.loads () convertit la chaîne JSON en un dictionnaire Python, et vous pouvez ensuite interagir avec vous comme vous le feriez avec n'importe quel autre dictionnaire.
JSON fournit la fonction JSON.Dumps (), qui convertit les objets Python en chaînes JSON. Voici un exemple:
<code class="language-python">import json mother = { "name": "Asake Babatunde", "age": 28, "marital status": "Married", "children": ["Ayo", "Tolu", "Simi"], "staff": False, "next of kin": {"name": "Babatune Lanre", "relationship": "husband"}, } with open("mother.json", "w", encoding="utf-8") as file_handle: json.dump(mother, file_handle, indent=4)</code>
Dans ce code, json.dumps () convertit le dictionnaire Python en une chaîne JSON.
Vous pouvez utiliser la fonction JSON.load () pour lire les données JSON à partir d'un fichier. Voici un exemple:
<code class="language-python">json.dump(obj, fp, indent)</code>
Dans ce code, json.load () lit le fichier et convertit les données JSON en un objet Python.
Vous pouvez utiliser la fonction json.dump () pour écrire des données JSON dans un fichier. Voici un exemple:
<code class="language-python">json.dumps(obj, indent)</code>
Dans ce code, json.dump () écrit un objet Python à un fichier en tant que données JSON.
json.dumps () offre la possibilité d'imprimer JSON magnifiquement. Voici un exemple:
<code class="language-python">import json subject = { "name": "Biology", "teacher": {"name": "Nana Ama", "sex": "female"}, "students_size": 24, "elective": True, "lesson days": ["Tuesday", "Friday"], }</code>
Dans ce code, le paramètre de retrait spécifie le nombre d'espaces à utiliser comme retrait, ce qui rend la sortie plus facile à lire.
Le module JSON ne peut gérer que de simples objets Python par défaut. Pour les objets complexes comme les classes personnalisées, vous devez fournir une fonction pour lui dire comment sérialiser les objets. Voici un exemple:
<code class="language-json">{ "name": "Chinedu Obi", "age": 24, "country": "Nigeria", "languages": [ "Igbo", "English", "Yoruba" ], "marital status": "single", "employee": true, "experience": [ { "title": "Frontend Engineering Intern", "company": "Andela" }, { "title": "Frontend Engineer", "company": "Paystack" } ] }</code>
Dans ce code, la fonction encode_person est utilisée pour convertir les objets de personne en formats sérialisables.
Si vous ne connaissez pas la structure des données JSON à l'avance, vous pouvez toujours la analyser dans un objet Python et l'explorer. Voici un exemple:
<code class="language-python">import json with open('employee.json', 'r', encoding='utf-8') as file_object: employee_dict = json.load(file_object) print(employee_dict)</code>
Dans ce code, json.loads () convertit la chaîne JSON en un dictionnaire Python, que vous pouvez ensuite itérer pour explorer son contenu.
Pour les grands fichiers JSON, vous pouvez utiliser le package IJSON qui vous permet de diffuser des données JSON au lieu de charger toutes les données en mémoire à la fois. Voici un exemple:
<code>{'name': 'Chinedu Obi', 'age': 24, 'country': 'Nigeria', 'languages': ['Igbo', 'English', 'Yoruba'], 'marital status': 'single', 'employee': True, 'experience': [{'title': 'Frontend Engineering Intern', 'company': 'Andela'}, {'title': 'Frontend Engineer', 'company': 'Paystack'}]}</code>
Dans ce code, ijson.items () génère un flux d'objets à partir de données JSON, que vous pouvez ensuite itérer.
Lorsque le module JSON rencontre un JSON non valide, il soulève un JSondeCodeerror. Vous pouvez assister à cette erreur et le gérer correctement. Voici un exemple:
<code class="language-python">import json mother = { "name": "Asake Babatunde", "age": 28, "marital status": "Married", "children": ["Ayo", "Tolu", "Simi"], "staff": False, "next of kin": {"name": "Babatune Lanre", "relationship": "husband"}, } with open("mother.json", "w", encoding="utf-8") as file_handle: json.dump(mother, file_handle, indent=4)</code>
Dans ce code, le bloc d'essai / sauf attrape le jsondecodeerror et imprime le message d'erreur.
demandes facilite l'envoi de requêtes HTTP et de traiter les réponses JSON à l'aide des données JSON. Voici un exemple:
<code class="language-python">json.dump(obj, fp, indent)</code>
Dans ce code, request.post () envoie une demande de poste à l'aide de données JSON, et Response.json () analyse la réponse 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!