JSON-Verarbeitung in C++: Überblick über Bibliotheken und praktische Beispiele
JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat, das häufig in Webanwendungen, APIs und Konfigurationsdateien verwendet wird. In C++ ist die Arbeit mit JSON nicht in die Standardbibliothek integriert, daher verwenden Entwickler externe Bibliotheken. In diesem Artikel betrachten wir die drei beliebtesten Werkzeuge: nlohmann/json, RapidJSON und Boost.JSON. Sie erfahren, wie Sie diese installieren, JSON parsen, eigene Strukturen erstellen und Daten serialisieren. Alle Beispiele werden mit C++-Code begleitet.
1. Die Bibliothek nlohmann/json
nlohmann/json ist die beliebteste Bibliothek für die Arbeit mit JSON in C++. Sie ist bekannt für ihre einfache und intuitive Syntax, die an Python oder JavaScript erinnert. Die Bibliothek ist header-only (nur Header-Dateien), was die Integration vereinfacht: Es reicht, die Datei json.hpp in das Projekt zu kopieren.
Installation
Laden Sie json.hpp von GitHub herunter und binden Sie es ein:
#include "json.hpp"using json = nlohmann::json;Parsen eines JSON-Strings
#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 << "Alter: " << data["age"] << std::endl; std::cout << "Erste Fähigkeit: " << data["skills"][0] << std::endl;
return 0;}Erstellung und Serialisierung von 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 — Einzug für hübsche Ausgabestd::cout << serialized << std::endl;2. Die Bibliothek RapidJSON
RapidJSON ist eine leistungsstarke Bibliothek, die auf Geschwindigkeit und minimalen Speicherverbrauch ausgelegt ist. Sie ist ebenfalls header-only und unterstützt SAX-Parsing (streaming) und DOM-Parsing (Baumerstellung). Sie eignet sich für Projekte, bei denen die Leistung wichtig ist, z. B. in Spiele-Engines oder stark ausgelasteten Servern.
Installation
Laden Sie die Dateien aus dem Repository RapidJSON herunter und binden Sie sie ein:
#include "rapidjson/document.h"#include "rapidjson/writer.h"#include "rapidjson/stringbuffer.h"Parsen von 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-Fehler!" << std::endl; return 1; }
std::cout << "Name: " << doc["name"].GetString() << std::endl; std::cout << "Alter: " << doc["age"].GetInt() << std::endl;
return 0;}Erstellung und Serialisierung von JSON
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. Die Bibliothek Boost.JSON
Boost.JSON ist Teil der Boost-Bibliotheken, die offiziell in C++ Bo
Auch in der Bibliothek
Arbeit mit Kafka in JavaScript (Node.js): Bibliothek node-rdkafka
SignalR C# (.NET): Komplettleitfaden mit Praxisbeispielen
GraphQL in C# (.NET): Die Bibliotheken Hot Chocolate und GraphQL.NET zur API-Erstellung
Node.js-Überwachung: Tools und Bibliotheken für Observability
Compose Multiplatform für Kotlin: Komplettes Tutorial mit Beispielen