JSON-Verarbeitung in C++: Bibliotheken, Parsing und Datenserialisierung

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

JSON-Verarbeitung in C++: Bibliotheken, Parsing und Beispiele



JSON (JavaScript Object Notation) ist eines der beliebtesten Formate für den Datenaustausch. Obwohl C++ keine integrierte JSON-Unterstützung bietet, gibt es mehrere leistungsstarke Bibliotheken, mit denen Sie JSON-Daten einfach parsen, generieren und modifizieren können. In diesem Artikel betrachten wir drei Hauptbibliotheken: nlohmann/json, RapidJSON und Boost.PropertyTree, und geben praktische Beispiele für deren Verwendung.



Warum braucht man eine Bibliothek für JSON in C++?

C++ ist eine kompilierte, leistungsorientierte Sprache. Das manuelle Parsen von JSON mit regulären Ausdrücken oder Zeichenfolgenoperationen ist eine zeitaufwändige und fehleranfällige Aufgabe. Spezialisierte Bibliotheken bieten:

  • Hohe Parsing- und Serialisierungsgeschwindigkeit.
  • Eine intuitive API (oft im STL-Stil).
  • Unterstützung für JSON-Standards (einschließlich verschachtelter Objekte, Arrays, null, Unicode).
  • Minimale Abhängigkeiten (oft header-only).


1. Die Bibliothek nlohmann/json (JSON for Modern C++)

Die beliebteste und am einfachsten zu verwendende Bibliothek. Sie wird als header-only (eine einzige Header-Datei) vertrieben. Ideal für Bildungsprojekte und kleine Anwendungen.



Installation

Laden Sie die Datei json.hpp aus dem Repository nlohmann/json herunter und binden Sie sie ein:

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


Beispiel: JSON aus einem String parsen

#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;}


Beispiel: JSON erstellen und serialisieren

#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 — Einzug für hübsche Ausgabe std::cout << serialized << "";

return 0;}


2. Die Bibliothek RapidJSON

RapidJSON ist eine hochleistungsfähige Bibliothek, die auf Geschwindigkeit und minimalen Speicherverbrauch ausgelegt ist. Sie wird häufig in Spielen, Serveranwendungen und eingebetteten Systemen verwendet. Unterstützt SAX-Stil (Stream-Parsing) und DOM-Stil.



Installation

Laden Sie das Archiv von GitHub herunter und binden Sie die Header-Dateien ein:

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


Beispiel: Parsen und Lesen

#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;}


Beispiel: JSON generieren

#include <iostream>#include "rapidjson/docume                    

Empfehlungen