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 : Pourquoi JSON en C++ ?

\n

JSON (JavaScript Object Notation) est un format léger d'échange de données, largement utilisé dans les applications web, les fichiers de configuration et les API. Bien que JSON soit initialement apparu en JavaScript, il est aujourd'hui devenu le standard de facto pour la transmission de données structurées entre un serveur et un client dans tout langage de programmation, y compris le C++.

\n

Dans cet article, nous allons voir comment travailler avec JSON en C++ : parser (lire) et sérialiser (créer) des données JSON. Ce contenu est destiné aux développeurs débutants qui connaissent déjà les bases du C++ (variables, fonctions, classes), mais n'ont pas encore travaillé avec JSON.

\n

Pour travailler avec JSON en C++, nous utiliserons la bibliothèque populaire nlohmann/json (également connue sous le nom de JSON for Modern C++). Elle est simple à installer, intuitive et parfaitement adaptée à l'apprentissage.

\n\n

Installation de la bibliothèque nlohmann/json

\n

Avant d'écrire du code, il est nécessaire d'inclure la bibliothèque. La méthode la plus simple consiste à utiliser la version header-only (un seul fichier d'en-tête suffit).

\n\n

Méthode 1 : Télécharger le fichier json.hpp

\n
    \n
  • Rendez-vous sur le dépôt GitHub nlohmann/json.
  • \n
  • Téléchargez le fichier json.hpp depuis la dernière version.
  • \n
  • Placez-le dans le dossier de votre projet.
  • \n
  • Incluez-le dans le code : #include "json.hpp"
  • \n
\n\n

Méthode 2 : Utiliser un gestionnaire de paquets (vcpkg / Conan)

\n

Si vous utilisez CMake, le plus simple est d'installer la bibliothèque via vcpkg :

\n
vcpkg install nlohmann-json
\n

Ou via Conan :

\n
conan install nlohmann_json/3.11.2@
\n\n

Après l'installation, incluez la bibliothèque dans le code :

\n
#include <nlohmann/json.hpp>\nusing json = nlohmann::json;
\n\n

Vous êtes maintenant prêt à travailler !

\n\n

Parsing JSON en C++ : lecture des données

\n

Le parsing est le processus de conversion d'une chaîne JSON en un objet avec lequel on peut travailler dans le code. La bibliothèque nlohmann/json rend cela extrêmement simple.

\n\n

Exemple 1 : Parsing d'une chaîne JSON

\n

Supposons que nous ayons une chaîne JSON contenant des informations sur un utilisateur :

\n
{\n  "name": "Alexeï",\n  "age": 30,\n  "is_student": false,\n  "hobbies": ["lecture", "programmation", "vélo"]\n}
\n\n

Le parsing s'effectue en une seule ligne :

\n
#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main() {\n    // Chaîne JSON source\n    std::string json_str = R"(\n    {\n        "name": "Alexeï",\n        "age": 30,\n        "is_student": false,\n        "hobbies": ["lecture", "programmation", "vélo"]\n    }\n    )";\n\n    // Parsing\n    json data = json::parse(json_str);\n\n    // Accès aux données\n    std::string name = data["name"];\n    int age = data["age"];\n    bool is_student = data["is_student"];\n    std::vector<std::string> hobbies = data["hobbies"];\n\n    // Affichage\n    std::cout << "Nom : " << name << std::endl;\n    std::cout << "Âge : " << age << std::endl;\n    std::cout << "Étudiant ? " << (is_student ? "oui" : "non") << std::endl;\n    std::cout << "Loisirs : ";\n    for (const auto& hobby : hobbies) {\n        std::cout << hobby << " ";\n    }\n    std::cout << std::endl;\n\n    return 0;\n}
\n\n

Résultat de l'exécution :

\n
Nom : Alexeï\nÂge : 30\nÉtudiant ? non\nLoisirs : lecture programmation vélo
\n\n

Exemple 2 : Traitement des objets imbriqués

\n

JSON contient souvent des structures imbriquées. Prenons l'exemple d'une adresse :

\n
{\n  "user": {\n    "name": "Maria",\n    "address": {\n      "city": "Moscou",\n      "street": "Tverskaïa"\n    }\n  }\n}
\n\n

Accès aux données imbriquées :

\n


                
                

Blogs

Book Recommendations