nlohmann/json für C++: vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in nlohmann/json: Was es ist und warum man es braucht

\n\n

Die Bibliothek nlohmann/json (auch bekannt als JSON for Modern C++) ist eine der beliebtesten und benutzerfreundlichsten Bibliotheken für die Arbeit mit JSON in der Sprache C++. Sie wurde von Niels Lohmann entwickelt und wird unter der MIT-Lizenz vertrieben. Das Hauptziel der Bibliothek ist es, eine intuitive, moderne und sichere Schnittstelle zum Parsen, Erstellen, Ändern und Serialisieren von JSON-Daten bereitzustellen.

\n\n

Wofür wird sie benötigt? In der modernen Entwicklung ist JSON (JavaScript Object Notation) der De-facto-Standard für den Datenaustausch zwischen Diensten, die Speicherung von Konfigurationen, die Arbeit mit APIs und Webanwendungen. Die Standardbibliothek von C++ bietet keine integrierte Unterstützung für JSON, daher müssen Entwickler entweder eigene Parser schreiben oder auf Drittanbieterlösungen zurückgreifen. nlohmann/json löst dieses Problem, indem es Folgendes bietet:

\n\n
    \n
  • Einfache Syntax — die Arbeit mit JSON ähnelt der Arbeit mit integrierten STL-Containern (std::map, std::vector).
  • \n
  • Typsicherheit — automatische Konvertierung zwischen C++- und JSON-Typen.
  • \n
  • Hohe Leistung — die Bibliothek ist für Geschwindigkeit und Speicher optimiert.
  • \n
  • Plattformunabhängigkeit — funktioniert unter Windows, Linux, macOS sowie auf eingebetteten Systemen.
  • \n
  • Vollständige Unterstützung des JSON-Standards — einschließlich verschachtelter Objekte, Arrays, null, boolescher Werte, Zahlen und Zeichenketten.
  • \n
\n\n

Die Bibliothek wird aktiv in industriellen Projekten eingesetzt, wie z. B. in Spiele-Engines, Webservern, Datenanalysetools und IoT-Geräten.

\n\n

Installation von nlohmann/json

\n\n

Im Gegensatz zu Python (wo pip verwendet wird) kann die Installation von Bibliotheken in C++ auf verschiedene Weise erfolgen. Betrachten wir die gängigsten.

\n\n

Methode 1: Header-only (für Anfänger empfohlen)

\n

Die Bibliothek nlohmann/json ist header-only — das bedeutet, dass es für die Verwendung ausreicht, einfach eine Header-Datei json.hpp herunterzuladen und in das Projekt einzubinden. Es ist keine Kompilierung, Verlinkung oder Installation von Abhängigkeiten erforderlich.

\n
    \n
  1. Laden Sie die Datei json.hpp aus dem offiziellen Repository herunter (neueste Version: v3.11.3).
  2. \n
  3. Platzieren Sie sie in einem Ordner Ihres Projekts, z. B. include/json.hpp.
  4. \n
  5. Binden Sie sie im Quellcode ein: #include "json.hpp".
  6. \n
\n\n

Methode 2: Installation über Paketmanager

\n

Wenn Sie moderne Build-Systeme verwenden, können Sie die Bibliothek über einen Paketmanager installieren:

\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

Methode 3: CMake FetchContent

\n

Für CMake-Projekte kann die Bibliothek während des Builds automatisch heruntergeladen werden:

\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

Schnellstart: Erstes Beispiel

\n\n

Lassen Sie uns ein einfaches Programm schreiben, das ein JSON-Objekt erstellt, es auf dem Bildschirm ausgibt und dann einen JSON-String zurück parst.

\n\n
#include <iostream>\n#include "json.hpp"\n\nusing json = nlohmann::json;\n\nint main() {\n    // 1. Erstellen eines JSON-Objekts\n    json person = {\n        {"name", "Alice"},\n        {"age", 30},\n        {"is_student", false},\n        {"skills", {"C++", "Python", "JSON"}},\n                    

Empfehlungen