Arbeiten mit JSON in C++: Parsing und Serialisierung für Anfänger

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

Einleitung: Warum wird JSON in C++ benötigt?

\n

JSON (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.

\n

In 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.

\n

Fü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\n

Installation der Bibliothek nlohmann/json

\n

Bevor 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\n

Methode 1: Datei json.hpp herunterladen

\n
    \n
  • Gehen Sie zum GitHub-Repository von nlohmann/json.
  • \n
  • Laden Sie die Datei json.hpp aus dem neuesten Release herunter.
  • \n
  • Legen Sie sie in den Ordner Ihres Projekts.
  • \n
  • Binden Sie sie im Code ein: #include "json.hpp"
  • \n
\n\n

Methode 2: Paketmanager verwenden (vcpkg / Conan)

\n

Wenn Sie CMake verwenden, ist es am einfachsten, die Bibliothek über vcpkg zu installieren:

\n
vcpkg install nlohmann-json
\n

Oder über Conan:

\n
conan install nlohmann_json/3.11.2@
\n\n

Nach der Installation binden Sie die Bibliothek im Code ein:

\n
#include <nlohmann/json.hpp>\nusing json = nlohmann::json;
\n\n

Jetzt können Sie loslegen!

\n\n

JSON-Parsing in C++: Daten lesen

\n

Parsing 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\n

Beispiel 1: Parsen eines JSON-Strings

\n

Angenommen, 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\n

Das 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\n

Ergebnis der Ausführung:

\n
Name: Alexej\nAlter: 30\nStudent? nein\nHobbys: Lesen Programmieren Fahrradfahren
\n\n

Beispiel 2: Verarbeitung von verschachtelten Objekten

\n

JSON 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\n

Zugriff auf verschachtelte Daten:

\n


                
                

Blogs

Buchempfehlungen