Traitement JSON en C++ : bibliothèques, 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

Traitement JSON en C++ : bibliothèques, analyse et exemples



JSON (JavaScript Object Notation) est l'un des formats d'échange de données les plus populaires. Bien que C++ ne dispose pas de support JSON intégré, il existe plusieurs bibliothèques puissantes qui permettent d'analyser, générer et modifier facilement des données JSON. Dans cet article, nous examinerons trois bibliothèques principales : nlohmann/json, RapidJSON et Boost.PropertyTree, et fournirons des exemples pratiques de leur utilisation.



Pourquoi une bibliothèque JSON en C++ ?

C++ est un langage compilé axé sur la performance. L'analyse manuelle du JSON à l'aide d'expressions régulières ou d'opérations sur les chaînes est une tâche laborieuse et sujette aux erreurs. Les bibliothèques spécialisées offrent :

  • Une vitesse élevée d'analyse et de sérialisation.
  • Une API intuitive (souvent dans le style de la STL).
  • La prise en charge des normes JSON (y compris les objets imbriqués, les tableaux, null, Unicode).
  • Un nombre minimal de dépendances (souvent header-only).


1. Bibliothèque nlohmann/json (JSON for Modern C++)

La bibliothèque la plus populaire et la plus simple à utiliser. Distribuée en tant que header-only (un seul fichier d'en-tête). Idéale pour les projets éducatifs et les petites applications.



Installation

Téléchargez le fichier json.hpp depuis le dépôt nlohmann/json et incluez-le :

#include "json.hpp"using json = nlohmann::json;


Exemple : analyse JSON à partir d'une chaîne

#include <iostream>#include "json.hpp"

int main() { std::string json_str = R"({ "name": "PythonLib", "year": 2025, "tags": ["C++", "JSON", "education"], "active": true })";

json data = json::parse(json_str);

std::cout << "Name: " << data["name"] << ""; std::cout << "Year: " << data["year"] << ""; std::cout << "First tag: " << data["tags"][0] << ""; std::cout << "Active: " << data["active"] << "";

return 0;}


Exemple : création et sérialisation JSON

#include <iostream>#include "json.hpp"

int main() { json obj; obj["title"] = "JSON in C++"; obj["pages"] = 42; obj["chapters"] = {"intro", "basics", "advanced"}; obj["metadata"]["author"] = "PythonLib Team";

std::string serialized = obj.dump(4); // 4 — indentation pour un affichage joli std::cout << serialized << "";

return 0;}


2. Bibliothèque RapidJSON

RapidJSON est une bibliothèque haute performance axée sur la vitesse et une consommation mémoire minimale. Souvent utilisée dans les jeux, les applications serveur et les systèmes embarqués. Prend en charge le style SAX (analyse en flux) et le style DOM.



Installation

Téléchargez l'archive depuis GitHub et incluez les fichiers d'en-tête :

#include "rapidjson/document.h"#include "rapidjson/writer.h"#include "rapidjson/stringbuffer.h"


Exemple : analyse et lecture

#include <iostream>#include "rapidjson/document.h"

int main() { const char* json = "{\\"project\\":\\"PythonLib\\",\\"version\\":2.0}"; rapidjson::Document doc; doc.Parse(json);

if (doc.HasParseError()) { std::cerr << "Parse error!"; return 1; }

std::cout << "Project: " << doc["project"].GetString() << ""; std::cout << "Version: " << doc["version"].GetDouble() << "";

return 0;}


Exemple : génération JSON

#include <iostream>#include "rapidjson/docume                    

Recommendations