Traitement JSON en C++ : aperçu des bibliothèques et exemples pratiques
JSON (JavaScript Object Notation) est un format léger d'échange de données, largement utilisé dans les applications web, les API et les fichiers de configuration. En C++, le travail avec JSON n'est pas intégré dans la bibliothèque standard, c'est pourquoi les développeurs utilisent des bibliothèques tierces. Dans cet article, nous examinerons trois outils les plus populaires : nlohmann/json, RapidJSON et Boost.JSON. Vous apprendrez comment les installer, analyser JSON, créer vos propres structures et sérialiser des données. Tous les exemples sont accompagnés de code en C++.
1. Bibliothèque nlohmann/json
nlohmann/json est la bibliothèque la plus populaire pour travailler avec JSON en C++. Elle est connue pour sa syntaxe simple et intuitive, rappelant Python ou JavaScript. La bibliothèque est header-only (uniquement des fichiers d'en-tête), ce qui simplifie l'intégration : il suffit de copier le fichier json.hpp dans le projet.
Installation
Téléchargez json.hpp depuis GitHub et incluez-le :
#include "json.hpp"using json = nlohmann::json;Analyse d'une chaîne JSON
#include <iostream>#include "json.hpp"
int main() { std::string json_str = R"({ "name": "Alice", "age": 30, "is_student": false, "skills": ["C++", "Python", "JSON"] })";
json data = json::parse(json_str);
std::cout << "Name: " << data["name"] << std::endl; std::cout << "Age: " << data["age"] << std::endl; std::cout << "First skill: " << data["skills"][0] << std::endl;
return 0;}Création et sérialisation JSON
json person;person["name"] = "Bob";person["age"] = 25;person["is_student"] = true;person["languages"].push_back("C");person["languages"].push_back("Java");
std::string serialized = person.dump(4); // 4 — indentation pour un affichage jolistd::cout << serialized << std::endl;2. Bibliothèque RapidJSON
RapidJSON est une bibliothèque haute performance, axée sur la vitesse et une utilisation minimale de la mémoire. Elle est également header-only et prend en charge le style d'analyse SAX (flux) et le style DOM (construction d'arbre). Elle convient aux projets où la performance est importante, comme les moteurs de jeu ou les serveurs à forte charge.
Installation
Téléchargez les fichiers depuis le dépôt RapidJSON et incluez-les :
#include "rapidjson/document.h"#include "rapidjson/writer.h"#include "rapidjson/stringbuffer.h"Analyse JSON
#include <iostream>#include "rapidjson/document.h"
int main() { const char* json = "{\\"name\\":\\"Charlie\\",\\"age\\":28,\\"active\\":true}"; rapidjson::Document doc; doc.Parse(json);
if (doc.HasParseError()) { std::cerr << "Parse error!" << std::endl; return 1; }
std::cout << "Name: " << doc["name"].GetString() << std::endl; std::cout << "Age: " << doc["age"].GetInt() << std::endl;
return 0;}Création JSON et sérialisation
rapidjson::Document doc;doc.SetObject();rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();
doc.AddMember("name", "Diana", allocator);doc.AddMember("score", 95.5, allocator);
rapidjson::StringBuffer buffer;rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);doc.Accept(writer);
std::cout << buffer.GetString() << std::endl;3. Bibliothèque Boost.JSON
Boost.JSON fait partie des bibliothèques Boost, officiellement adoptée dans le C++ Bo
Aussi dans la bibliothèque
Zod pour TypeScript : guide complet avec exemples
NHibernate C# (.NET) : guide complet avec exemples pratiques
Génération de rapports PDF en Go : aperçu des bibliothèques et exemples de code
Compression JavaScript (Node.js) : guide complet avec exemples