Travailler avec JSON en C++ : parsing et sérialisation pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction au travail avec JSON en C++

JSON (JavaScript Object Notation) est un format léger d'échange de données, largement utilisé dans le développement web, les fichiers de configuration et les API. Bien que C++ ne dispose pas de support intégré pour JSON, il existe de nombreuses bibliothèques qui rendent le travail avec ce format simple et pratique. Dans cet article, nous verrons comment analyser (parser) et sérialiser (créer) des données JSON en C++ en utilisant la bibliothèque populaire nlohmann/json. Ce contenu est destiné aux développeurs débutants qui connaissent déjà les bases du C++.



1. Installation et inclusion de la bibliothèque nlohmann/json

La bibliothèque nlohmann/json est l'une des plus populaires et des plus simples à utiliser pour travailler avec JSON en C++. Elle prend en charge C++11 et versions ultérieures, et fonctionne sur toutes les plateformes principales.

Méthodes d'installation

  • Télécharger le fichier d'en-tête : rendez-vous sur le dépôt GitHub et téléchargez le fichier json.hpp.
  • Installation via vcpkg : vcpkg install nlohmann-json
  • Installation via Conan : conan install nlohmann_json/3.11.2@

Après l'installation, incluez simplement le fichier dans votre projet :

#include <iostream>#include "json.hpp"using json = nlohmann::json;

int main() { std::cout << "Bibliothèque incluse !" << std::endl; return 0;}


2. Parsing JSON : lecture de données à partir d'une chaîne et d'un fichier

Le parsing (analyse) de JSON est le processus de conversion d'une chaîne au format JSON en structures de données C++. La bibliothèque nlohmann/json rend cela très simple.



Parsing à partir d'une chaîne

Examinons un exemple d'analyse d'un objet JSON simple :

#include <iostream>#include "json.hpp"using json = nlohmann::json;

int main() { std::string json_str = R"({ "name": "Anna", "age": 25, "is_student": false, "hobbies": ["lecture", "natation", "programmation"] })";

// Parsing de la chaîne json data = json::parse(json_str);

// Accès aux données std::string name = data["name"]; int age = data["age"]; bool is_student = data["is_student"]; std::vector<std::string> hobbies = data["hobbies"];

std::cout << "Nom : " << name << std::endl; std::cout << "Âge : " << age << std::endl; std::cout << "Étudiant : " << (is_student ? "oui" : "non") << std::endl; std::cout << "Loisirs : "; for (const auto& hobby : hobbies) { std::cout << hobby << " "; } std::cout << std::endl;

return 0;}


Parsing à partir d'un fichier

Les données JSON sont souvent stockées dans des fichiers. Voici comment les lire :

#include <iostream>#include <fstream>#include "json.hpp"using json = nlohmann::json;

int main() { std::ifstream file("data.json"); if (!file.is_open()) { std::cerr << "Erreur d'ouverture du fichier !" << std::endl; return 1; }

json data = json::parse(file); file.close();

// Affichage des données std::cout << "Données du fichier : " << data.dump(4) << std::endl; return 0;}

La méthode dump(4) convertit le JSON en une chaîne avec une indentation de 4 espaces pour une lecture facile.



3. Sérialisation : création de JSON à partir de données C++

La sérialisation est le processus inverse : la conversion de données C++ en une chaîne JSON. La bibliothèque permet de créer des objets JSON de manière intuitive.



Création d'un objet JSON simple

#include <iostream>#include "json.hpp"using json = nlohmann::json;

int main() { json person;

person["name"] = "Ivan";

Blogs

Book Recommendations