Travailler avec JSON en C++ : analyse et sérialisation de données

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

Travailler avec JSON en C++ : analyse et sérialisation



JSON (JavaScript Object Notation) reste l'un des formats les plus populaires pour l'échange de données dans les applications web, les fichiers de configuration et les API. Bien que C++ ne dispose pas de support JSON intégré, il existe plusieurs bibliothèques puissantes qui rendent le travail avec ce format simple et efficace. Dans cet article, nous examinerons les deux bibliothèques les plus populaires : nlohmann/json (recommandée pour la plupart des projets) et RapidJSON (pour les tâches où la performance est critique). Vous apprendrez à analyser JSON, à sérialiser des objets en chaîne et à gérer les erreurs.



Pourquoi JSON en C++ ?



C++ est un langage de programmation système, mais les applications modernes nécessitent de plus en plus d'interactions avec des services web, le stockage de configurations ou l'échange de données entre microservices. JSON offre un format pratique et lisible pour ces tâches. L'utilisation de bibliothèques pour travailler avec JSON en C++ permet de :

  • Charger et traiter des fichiers de configuration (par exemple, pour les moteurs de jeu ou les serveurs).
  • Interagir avec des API REST (envoi et réception de données).
  • Sauvegarder et restaurer l'état de structures de données complexes.
  • S'intégrer avec d'autres langages et systèmes utilisant JSON.


Bibliothèque nlohmann/json : simplicité et commodité



La bibliothèque nlohmann/json (souvent appelée "JSON for Modern C++") est probablement la plus populaire grâce à son API intuitive, rappelant le travail avec Python ou JavaScript. Elle prend en charge C++11 et versions ultérieures.



Installation

La méthode la plus simple est de copier le fichier d'en-tête unique json.hpp dans votre projet. Vous pouvez le télécharger depuis le dépôt officiel ou l'installer via un gestionnaire de paquets (vcpkg, Conan).



Analyse JSON à partir d'une chaîne

Examinons un exemple de base d'analyse d'une chaîne JSON et d'accès aux données :

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

int main() { // Chaîne JSON à analyser std::string json_string = R"({ "name": "C++", "version": 17, "features": ["RAII", "Templates", "Smart Pointers"], "is_compiled": true })";

// Analyse de la chaîne en objet json json data = json::parse(json_string);

// Accès aux valeurs std::cout << "Langage : " << data["name"] << std::endl; std::cout << "Version : " << data["version"] << std::endl; std::cout << "Compilé : " << data["is_compiled"] << std::endl;

// Accès au tableau for (auto& feature : data["features"]) { std::cout << " - " << feature << std::endl; } return 0;}

Sortie :

Langage : "C++"Version : 17Compilé : true - "RAII" - "Templates" - "Smart Pointers"


Sérialisation (création de JSON)

Créer un objet JSON et le convertir en chaîne est tout aussi simple :

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

int main() { // Création d'un objet JSON json person; person["name"] = "Alice"; person["age"] = 30; person["is_student"] = false; person["hobbies"] = {"reading", "coding", "chess"};

// Ajout d'un objet imbriqué person["address"]["city"] = "Moscow"; person["address"]["zip"] = "101000";

// Sérialisation en chaîne avec indentation std::string serialized = person.dump(4); // 4 espaces pour l'indentation std::cout << serialized << std::endl;

return 0;}

La méthode dump(4) retourne une chaîne joliment formatée. Pour une sortie compacte, utilisez

Blogs

Book Recommendations