nlohmann/json pour C++ : guide complet avec exemples

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 à nlohmann/json : qu'est-ce que c'est et pourquoi l'utiliser

\n\n

La bibliothèque nlohmann/json (également connue sous le nom de JSON for Modern C++) est l'une des bibliothèques les plus populaires et les plus pratiques pour travailler avec JSON en langage C++. Elle a été développée par Niels Lohmann et est distribuée sous licence MIT. L'objectif principal de la bibliothèque est de fournir une interface intuitive, moderne et sécurisée pour l'analyse, la création, la modification et la sérialisation de données JSON.

\n\n

Pourquoi en a-t-on besoin ? Dans le développement moderne, JSON (JavaScript Object Notation) est le standard de facto pour l'échange de données entre services, le stockage de configurations, le travail avec les API et les applications web. La bibliothèque standard du C++ ne prend pas en charge JSON de manière native, ce qui oblige les développeurs soit à écrire leurs propres analyseurs, soit à utiliser des solutions tierces. nlohmann/json résout ce problème en offrant :

\n\n
    \n
  • Une syntaxe simple — le travail avec JSON ressemble au travail avec les conteneurs intégrés de la STL (std::map, std::vector).
  • \n
  • La sécurité des types — conversion automatique entre les types C++ et JSON.
  • \n
  • Des performances élevées — la bibliothèque est optimisée pour la vitesse et la mémoire.
  • \n
  • La multiplateforme — fonctionne sur Windows, Linux, macOS, ainsi que sur les systèmes embarqués.
  • \n
  • La prise en charge complète de la norme JSON — y compris les objets imbriqués, les tableaux, null, les valeurs booléennes, les nombres et les chaînes de caractères.
  • \n
\n\n

La bibliothèque est activement utilisée dans des projets industriels, tels que les moteurs de jeux, les serveurs web, les outils d'analyse de données et les appareils IoT.

\n\n

Installation de nlohmann/json

\n\n

Contrairement à Python (où l'on utilise pip), en C++, l'installation des bibliothèques peut être effectuée de plusieurs manières. Examinons les plus populaires.

\n\n

Méthode 1 : Header-only (recommandée pour les débutants)

\n

La bibliothèque nlohmann/json est header-only — cela signifie que pour l'utiliser, il suffit de télécharger un seul fichier d'en-tête json.hpp et de l'inclure dans le projet. Aucune compilation, liaison ou installation de dépendances n'est nécessaire.

\n
    \n
  1. Téléchargez le fichier json.hpp depuis le dépôt officiel (dernière version : v3.11.3).
  2. \n
  3. Placez-le dans le dossier de votre projet, par exemple, include/json.hpp.
  4. \n
  5. Dans le code source, incluez : #include "json.hpp".
  6. \n
\n\n

Méthode 2 : Installation via les gestionnaires de paquets

\n

Si vous utilisez des systèmes de construction modernes, vous pouvez installer la bibliothèque via un gestionnaire de paquets :

\n
    \n
  • vcpkg (Windows, Linux, macOS) : vcpkg install nlohmann-json
  • \n
  • Conan : conan install nlohmann_json/3.11.3@
  • \n
  • Homebrew (macOS) : brew install nlohmann-json
  • \n
  • APT (Ubuntu/Debian) : sudo apt install nlohmann-json3-dev
  • \n
\n\n

Méthode 3 : CMake FetchContent

\n

Pour les projets CMake, vous pouvez télécharger automatiquement la bibliothèque lors de la construction :

\n
include(FetchContent)\nFetchContent_Declare(\n  json\n  GIT_REPOSITORY https://github.com/nlohmann/json.git\n  GIT_TAG v3.11.3\n)\nFetchContent_MakeAvailable(json)\ntarget_link_libraries(your_target PRIVATE nlohmann_json::nlohmann_json)
\n\n

Démarrage rapide : premier exemple

\n\n

Écrivons un programme simple qui crée un objet JSON, l'affiche à l'écran, puis analyse une chaîne JSON en retour.

\n\n
#include <iostream>\n#include "json.hpp"\n\nusing json = nlohmann::json;\n\nint main() {\n    // 1. Création d'un objet JSON\n    json person = {\n        {"name", "Alice"},\n        {"age", 30},\n        {"is_student", false},\n        {"skills", {"C++", "Python", "JSON"}},\n                    

Recommendations