Einleitung: Warum wird JSON in C++ benötigt?
\nJSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das häufig in Webanwendungen, Konfigurationsdateien und APIs verwendet wird. Obwohl JSON ursprünglich in JavaScript entstand, ist es heute zum De-facto-Standard für die Übertragung strukturierter Daten zwischen Server und Client in jeder Programmiersprache, einschließlich C++, geworden.
\nIn diesem Artikel werden wir uns ansehen, wie man mit JSON in C++ arbeitet: JSON-Daten parsen (lesen) und serialisieren (erstellen). Das Material richtet sich an Anfänger-Entwickler, die bereits mit den Grundlagen von C++ (Variablen, Funktionen, Klassen) vertraut sind, aber noch nicht mit JSON gearbeitet haben.
\nFür die Arbeit mit JSON in C++ verwenden wir die beliebte Bibliothek nlohmann/json (auch bekannt als JSON for Modern C++). Sie ist einfach zu installieren, intuitiv und hervorragend für das Lernen geeignet.
\n\nInstallation der Bibliothek nlohmann/json
\nBevor wir Code schreiben, muss die Bibliothek eingebunden werden. Der einfachste Weg ist die Verwendung der Header-only-Version (eine einzige Header-Datei ist ausreichend).
\n\nMethode 1: Datei json.hpp herunterladen
\n- \n
- Gehen Sie zum GitHub-Repository von nlohmann/json. \n
- Laden Sie die Datei
json.hppaus dem neuesten Release herunter. \n - Legen Sie sie in den Ordner Ihres Projekts. \n
- Binden Sie sie im Code ein:
#include "json.hpp"\n
Methode 2: Paketmanager verwenden (vcpkg / Conan)
\nWenn Sie CMake verwenden, ist es am einfachsten, die Bibliothek über vcpkg zu installieren:
\nvcpkg install nlohmann-json\nOder über Conan:
\nconan install nlohmann_json/3.11.2@\n\nNach der Installation binden Sie die Bibliothek im Code ein:
\n#include <nlohmann/json.hpp>\nusing json = nlohmann::json;\n\nJetzt können Sie loslegen!
\n\nJSON-Parsing in C++: Daten lesen
\nParsing ist der Prozess der Umwandlung eines JSON-Strings in ein Objekt, mit dem im Code gearbeitet werden kann. Die Bibliothek nlohmann/json macht dies denkbar einfach.
\n\nBeispiel 1: Parsen eines JSON-Strings
\nAngenommen, wir haben einen JSON-String mit Informationen über einen Benutzer:
\n{\n "name": "Alexej",\n "age": 30,\n "is_student": false,\n "hobbies": ["Lesen", "Programmieren", "Fahrradfahren"]\n}\n\nDas Parsing erfolgt in einer einzigen Zeile:
\n#include <iostream>\n#include <nlohmann/json.hpp>\n\nusing json = nlohmann::json;\n\nint main() {\n // Ursprünglicher JSON-String\n std::string json_str = R"(\n {\n "name": "Alexej",\n "age": 30,\n "is_student": false,\n "hobbies": ["Lesen", "Programmieren", "Fahrradfahren"]\n }\n )";\n\n // Parsing\n json data = json::parse(json_str);\n\n // Zugriff auf Daten\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 // Ausgabe\n std::cout << "Name: " << name << std::endl;\n std::cout << "Alter: " << age << std::endl;\n std::cout << "Student? " << (is_student ? "ja" : "nein") << std::endl;\n std::cout << "Hobbys: ";\n for (const auto& hobby : hobbies) {\n std::cout << hobby << " ";\n }\n std::cout << std::endl;\n\n return 0;\n}\n\nErgebnis der Ausführung:
\nName: Alexej\nAlter: 30\nStudent? nein\nHobbys: Lesen Programmieren Fahrradfahren\n\nBeispiel 2: Verarbeitung von verschachtelten Objekten
\nJSON enthält oft verschachtelte Strukturen. Betrachten wir ein Beispiel mit einer Adresse:
\n{\n "user": {\n "name": "Maria",\n "address": {\n "city": "Moskau",\n "street": "Twerskaja"\n }\n }\n}\n\nZugriff auf verschachtelte Daten:
\nBlogs
Buchempfehlungen
Lesen Sie auch
Docker und JavaScript: Containerisierung von Node.js-Anwendungen (Fortgeschrittenenniveau)
Feature Flags in Swift: flexible Konfiguration ohne neuen Build
Wie man Swift-Entwickler wird: Tipps und Lebenslauf
KI-Assistent in PHP: Wie man Code generiert, statt Bugs zu suchen
Wer zum Teufel sind Fn, FnMut und FnOnce? Rust-Closures unter dem Mikroskop