So analysieren Sie JSON in C++

How Parse Json C



Die Absicht dieses Tutorials besteht darin, die JSON-Daten zu verstehen und zu verstehen, wie JSON-Daten in C++ analysiert werden. Wir werden JSON-Daten, Object, Array und JSON-Syntax diskutieren und dann mehrere Arbeitsbeispiele durchgehen, um den Parsing-Mechanismus von JSON-Daten in C++ zu verstehen.

Was ist JSON?

JSON ist eine leichtgewichtige textbasierte Darstellung zum organisierten Speichern und Übertragen strukturierter Daten. Die JSON-Daten werden in Form von geordneten Listen und Schlüssel-Wert-Paaren dargestellt. JSON steht für J ava S krippe ODER Objekt n otation. Wie der vollständige Name andeutet, wird es von JavaScript abgeleitet. JSON-Daten werden jedoch in den meisten gängigen Programmiersprachen unterstützt.







Es wird häufig verwendet, um die Daten vom Server auf eine Webseite zu übertragen. Es ist viel einfacher und sauberer, die strukturierten Daten in JSON als XML darzustellen.



JSON-Syntaxregel

Hier sind die JSON-Syntaxregeln:



  1. JSON-Daten sollten immer in Form von Schlüssel-Wert-Paaren vorliegen.
  2. JSON-Daten werden durch Kommas getrennt.
  3. Eine geschweifte Klammer wird verwendet, um das JSON-Objekt darzustellen.
  4. Eine eckige Klammer wird verwendet, um ein JSON-Array darzustellen.

Was sind JSON-Daten?

Die JSON-Daten werden in Form von Schlüssel-Wert-Paaren dargestellt. Dies ist vergleichbar mit einem Wörterbuch oder Hash in anderen Programmiersprachen.





Name: Drake

Dies ist ein Beispiel für einfache JSON-Daten. Der Schlüssel hier ist Name und Drake ist der entsprechende Wert. Der Schlüssel, d. h. Name und der Wert, d. h. Drake, werden durch einen Doppelpunkt getrennt.



JSON-Dateierweiterung

Die JSON-Daten werden normalerweise in der Datei mit der Erweiterung .json gespeichert. Um beispielsweise die Daten des Mitarbeiters zu speichern, können Sie die Datei einfach als „employee.json“ benennen. Dies wäre eine einfache Textdatei. Sie können diese JSON-Datei dann in einem Ihrer bevorzugten Texteditoren öffnen.

JSON-Objekt

Das JSON-Objekt ist nichts anderes als die in geschweiften Klammern eingeschlossenen JSON-Daten. Hier ist ein Beispiel für ein JSON-Objekt:

{
Name:Erpel,
Angestellten ID:23547a,
Telefon: 23547,
Abteilung:Finanzen
}

Ein JSON-Objekt kann mehrere JSON-Daten enthalten. Alle JSON-Daten werden durch ein Komma getrennt. JSON-Daten werden als Schlüssel-Wert-Paare dargestellt. Der Schlüssel, d. h. Name und der Wert, d. h. Drake, werden durch einen Doppelpunkt getrennt. Im obigen Beispiel gibt es vier Schlüssel-Wert-Paare. Der erste Schlüssel ist Name; Drake ist der entsprechende Wert dafür. Ebenso sind EmployeeID, Phone und Department die anderen drei Schlüssel.

JSON-Array

Ein JSON-Array kann mehrere durch Kommas getrennte JSON-Objekte enthalten. Das JSON-Array wird in eine eckige Klammer eingeschlossen. Sehen wir uns ein Beispiel für ein JSON-Array an:

'Studenten':[
{'Vorname':'Sean', 'Nachname':'Braun'},
{'Vorname':'Erpel', 'Nachname':'Wilhelm'},
{'Vorname':'Tom', 'Nachname':'Müller'},
{Vorname:Peter,Nachname:Johnson}
]

Dies ist ein Beispiel für ein JSON-Array. Hier wird Students in eine eckige Klammer, d. h. Array, eingeschlossen und enthält vier JSON-Objekte. Jedes dieser Objekte wird in Form von Schlüssel-Wert-Paaren dargestellt und durch ein Komma getrennt.

Eine JSON-Beispieldatei

Da wir nun JSON-Daten, JSON-Objekte und JSON-Arrays verstanden haben, sehen wir uns ein Beispiel für eine JSON-Datei an:

{
Vorname:Sean,
Nachname:Braun,
Studenten ID: 21453,
Abteilung:Computer-Sc.,
Themen:[Mathematik,Phy,Chem]
}

Parsen von Bibliotheken in C++:

Es gibt keine native Lösung zum Parsen von JSON-Daten in C++. Es gibt jedoch mehrere Bibliotheken zum Parsen von JSON-Daten in C++. In diesem Artikel werden wir uns die beiden beliebtesten Bibliotheken zum Parsen von JSON-Daten in C++ ansehen. Hier sind die GitHub-Links zum Parsen von JSON-Daten:

  1. https://github.com/nlohmann/json
  2. https://github.com/Tencent/rapidjson/

Sie können diese Bibliotheken herunterladen, um die unten aufgeführten Beispiele ausführen zu können.

Beispiele

Jetzt haben wir ein grundlegendes Verständnis von JSON-Daten, Objekten, Arrays und verfügbaren Parsing-Bibliotheken. Sehen wir uns nun einige Beispiele zum Parsen von JSON-Daten in C++ an:

  • Beispiel-1: Parsen von JSON in C++
  • Beispiel-2: Parsen und Serialisieren von JSON in C++
  • Beispiel-3: Parsen von JSON in C++

Für Beispiel-1 und Beispiel-2 verwenden wir die nlohmann-Bibliothek. Im Fall von Beispiel-3 verwenden wir die RapidJSON-Bibliothek.

Beispiel-1: Parsen von JSON in C++

In diesem Beispielprogramm zeigen wir, wie Sie in C++ auf Werte von JSON-Daten zugreifen.

#enthalten
#include 'json.hpp'

json verwenden=nlohmann::json;

inthauptsächlich()
{

// jdMitarbeiter
json jdMitarbeiter=
{
{'Vorname','Sean'},
{'Nachname','Braun'},
{'Studenten ID',21453},
{'Abteilung','Computer-Sc.'}
};

// Auf die Werte zugreifen
std::SchnurfName=jdMitarbeiter.Wert('Vorname', 'Hoppla');
std::SchnurlName=jdMitarbeiter.Wert('Nachname', 'Hoppla');
intsID=jdMitarbeiter.Wert('Studenten ID', 0);
std::SchnurAbteilung=jdMitarbeiter.Wert('Abteilung', 'Hoppla');

// Werte ausgeben
std::Kosten << 'Vorname: ' <<fName<<std::endl;
std::Kosten << 'Nachname: ' <<lName<<std::endl;
std::Kosten << 'Studenten ID: ' <<sID<<std::endl;
std::Kosten << 'Abteilung: ' <<Abteilung<<std::endl;

Rückkehr 0;
}

Beispiel-2: Parsen und Serialisieren von JSON in C++

In diesem Beispielprogramm werden wir sehen, wie JSON in C++ geparst und serialisiert wird. Wir verwenden json::parse(), um die JSON-Daten zu analysieren.

#enthalten
#include 'json.hpp'
#enthalten

json verwenden=nlohmann::json;

inthauptsächlich()
{
// Hier ist ein JSON-Text
verkohlenText[] =R'(
{
'
Buch': {
'
Breite': 450,
'
Höhe': 30,
'
Titel':'Hallo Welt',
'
isBiografie': falsch,
'
Anzahl Kopien': 4,
'
Bibliotheks-IDs': [2319, 1406, 3854, 987]
}
}
) '
;

// Lass uns JSON analysieren und serialisieren
json j_complete=json::analysieren(Text);
std::Kosten <<std::setw(4) <<j_vollständig<<std::endl;
}

Beispiel-3: Parsen von JSON in C++

Jetzt zeigen wir, wie Sie JSON-Strings mithilfe der RapidJSON-Bibliothek analysieren. RapidJSON wurde ursprünglich von RapidXML inspiriert. In diesem Beispielprogramm parsen wir einen JSON-String in DOM. Wir haben mydoc vom Typ Document deklariert und dann die mydoc.parse()-Methode verwendet, um den JSON-String zu analysieren.

#enthalten
#include 'rapidjson/writer.h'
#include 'rapidjson/document.h'
#include 'rapidjson/stringbuffer.h'

Verwenden des Namensraums rapidjson;

inthauptsächlich()
{

const verkohlen*json= '{'Vorname':'Sean','Nachname':'Braun','empId': 21453,
'
Abteilung':'Computer-Sc.'}';

// Analysiere den JSON-String in DOM
Dokument mydoc;
mydoc.Analysieren(json);

// DOM zu String
StringBuffer-Puffer;
Schriftsteller<StringBuffer>Schriftsteller(Puffer);

mydoc.Annehmen(Schriftsteller);

// Ausgabe ausgeben
std::Kosten <<Puffer.GetString() <<std::endl;

Rückkehr 0;
}

Abschluss

In diesem Artikel haben wir kurz diskutiert JSON Daten, Objekt, Array und Syntax. Wie wir wissen, gibt es keine native Lösung für das Parsen von JSON-Daten in C++; Wir haben zwei verschiedene Bibliotheken verwendet, um JSON-Daten in C++ zu analysieren. Wir haben uns drei verschiedene Beispiele angesehen, um den JSON-Datenparsing-Mechanismus in C++ zu demonstrieren. Im Vergleich zur nlohmann-Bibliothek ist RapidJSON klein, schnell und speicherfreundlich.