Hvordan analysere JSON i C ++

Hvordan analysere JSON i C ++
Intensjonen med denne opplæringen er å forstå JSON -dataene og hvordan du kan analysere JSON -data i C++. Vi vil diskutere JSON -data, objekt, matrise, JSON -syntaks, og deretter gå gjennom flere arbeidseksempler for å forstå analysemekanismen til JSON -data i C++.

Hva er JSON?

JSON er en lett tekstbasert representasjon for lagring og overføring av strukturerte data på en organisert måte. JSON-dataene er representert i form av bestilte lister og nøkkelverdipar. JSON står for JAvaSCript Objekt Notation. Som det fulle navnet indikerer, er det avledet fra JavaScript. Imidlertid støttes JSON -data på de fleste av de populære programmeringsspråk.

Det brukes ofte til å overføre dataene fra serveren til en webside. Det er mye enklere og renere å representere de strukturerte dataene i JSON enn XML.

JSON syntaksregel

Her er JSON -syntaksreglene:

  1. JSON-data skal alltid være i form av nøkkelverdipar.
  2. JSON -data skilles med komma.
  3. En krøllete stag brukes til å representere JSON -objekt.
  4. En firkantet brakett brukes til å representere en JSON -matrise.

Hva er JSON -data?

JSON-dataene er representert i form av nøkkelverdipar. Dette ligner en ordbok eller hasj på andre programmeringsspråk.

“Navn”: ”Drake”

Dette er et eksempel på enkle JSON -data. Nøkkelen her er "Navn" og "Drake" er den tilsvarende verdien. Nøkkelen, jeg.e., “Navn” og verdien, jeg.e., “Drake” er atskilt med en kolon.

JSON File Extension

JSON -dataene lagres normalt i filen med utvidelsen av “.JSON ”. For eksempel for å lagre den ansattes data, kan du ganske enkelt navngi filen som 'ansatt.json '. Dette ville være en enkel tekstfil. Du kan deretter åpne denne JSON -filen i noen av dine favoritt -redaktører.

JSON -objekt

JSON -objektet er ingenting annet enn JSON -dataene som er vedlagt i de krøllete seler. Her er et eksempel JSON -objekt:


“Navn”: ”Drake”,
“Ansatt ID”: “23547a”,
“Telefon”: “23547”,
“Avdeling”: “Finans”

Et JSON -objekt kan inneholde flere JSON -data. Hver JSON -data er atskilt med komma. JSON-data er representert som nøkkelverdipar. Nøkkelen, jeg.e., “Navn” og verdien, jeg.e., “Drake” er atskilt med en kolon. I eksemplet ovenfor er det fire nøkkelverdipar. Den første nøkkelen er "Navn"; “Drake” er den tilsvarende verdien for den. Tilsvarende er "ansatt", "telefon" og "avdeling" de tre andre nøklene.

JSON Array

En JSON-matrise kan inneholde flere komma-separerte JSON-objekter. JSON -matrisen er vedlagt i en firkantet brakett. La oss se på et eksempel på en JSON -matrise:

"Studenter": [
"FirstName": "Sean", "LastName": "Brown",
"FirstName": "Drake", "LastName": "Williams",
"FirstName": "Tom", "LastName": "Miller",
“FirstName”: ”Peter”, “LastName”: “Johnson”
]

Dette er et eksempel på en JSON -matrise. Her er "studenter" vedlagt en firkantet brakett, jeg.e., Array, og den inneholder fire JSON -objekter. Hvert av disse objektene er representert i form av nøkkelverdipar og er atskilt med komma.

En prøve JSON -fil

Nå, siden vi forsto JSON -data, JSON Objects, JSON Array, la oss se på et eksempel på en JSON -fil:


“FirstName”: “Sean”,
“LastName”: “Brown”,
“Student -ID”: 21453,
“Avdeling”: “Datamaskin SC.”,
“Emner”: [“Matematikk”, “Phy”, “Chem”]

Parsing biblioteker i C ++:

Det er ingen naturlig løsning for analysering av JSON -data i C++. Imidlertid er det flere biblioteker for å analysere JSON -data i C++. I denne artikkelen skal vi se nærmere på de to mest populære bibliotekene for å analysere JSON -data i C++. Her er GitHub -koblingene for å analysere JSON -data:

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

Det kan være lurt å laste ned disse bibliotekene for å kunne utføre eksemplene som vises nedenfor.

Eksempler

Nå har vi en grunnleggende forståelse av JSON -data, objekter, matriser og tilgjengelige parsingbiblioteker. La oss nå se på et par eksempler for å analysere JSON -data i C ++:

  • Eksempel-1: Parse JSON i C++
  • Eksempel-2: Analyse og serialiser JSON i C++
  • Eksempel-3: Parse JSON i C++

For eksempel 1 og eksempel-2, vil vi benytte oss av “Nlohmann” -biblioteket. Når det gjelder eksempel-3, vil vi bruke "Rapidjson" -biblioteket.

Eksempel-1: Parse JSON i C++

I dette eksempelprogrammet vil vi demonstrere hvordan du får tilgang til verdier av JSON -data i C++.

#inkludere
#include "Json.HPP "
Bruker JSON = nlohmann :: json;
int main ()

// JD -arbeidstakere
json jdemploys =
"FirstName", "Sean",
"LastName", "Brown",
"StudentId", 21453,
"Avdeling", "Computer SC.";
// få tilgang til verdiene
std :: String fname = jdemploys.verdi ("FirstName", "Oops");
std :: String lName = jdemploys.verdi ("LastName", "Oops");
int sid = jdemploys.verdi ("StudentId", 0);
Std :: String Dept = JDEmployee.verdi ("avdeling", "oops");
// Skriv ut verdiene
std :: cout << "First Name: " << fName << std::endl;
std :: cout << "Last Name: " << lName << std::endl;
std :: cout << "Student ID: " << sID << std::endl;
std :: cout << "Department: " << dept << std::endl;
retur 0;

Eksempel-2: Analyse og serialiser JSON i C++

I dette eksempelprogrammet skal vi se hvordan du kan analysere og serialisere JSON i C++. Vi bruker "JSON :: parse ()" for å analysere JSON -dataene.

#inkludere
#include "Json.HPP "
#inkludere
Bruker JSON = nlohmann :: json;
int main ()

// Her er en JSON -tekst
char tekst [] = r "(

"Bok":
"Bredde": 450,
"Høyde": 30,
"Tittel": "Hello World",
"Isbiografi": falsk,
"Numofcopies": 4,
"Libraryids": [2319, 1406, 3854, 987]


) ";
// La oss analysere og serialisere JSON
json j_complete = json :: parse (tekst);
std :: cout << std::setw(4) << j_complete << std::endl;

Eksempel-3: Parse JSON i C++

Nå vil vi demonstrere hvordan du kan analysere JSON -streng ved hjelp av RapidJson -biblioteket. Rapidjson ble opprinnelig inspirert av RapidXML. I dette eksempelprogrammet analyserer vi en JSON -streng til DOM. Vi har erklært “MYDOC” av type “Dokument” og deretter ved å bruke “MYDOC.parse () ”metode for å analysere JSON -strengen.

#inkludere
#include "Rapidjson/Writer.h "
#include "Rapidjson/Document.h "
#include "RapidJson/StringBuffer.h "
ved hjelp av navneområdet Rapidjson;
int main ()

const char* json = "" FirstName ":" Sean "," LastName ":" Brown "," Empid ": 21453,
"Avdeling": "Computer SC."";
// analyser JSON -strengen til DOM
Dokumentere mydoc;
mydoc.Parse (JSON);
// dom til streng
StringBuffer Buffer;
Forfatter forfatter (buffer);
mydoc.Godta (forfatter);
// Skriv ut utgangen
std :: cout << buffer.GetString() << std::endl;
retur 0;

Konklusjon

I denne artikkelen har vi kort diskutert JSON -data, objekt, matrise og syntaks. Som vi vet, er det ingen naturlig løsning for JSON -data som analyserer i C ++; Vi har brukt to forskjellige biblioteker for å analysere JSON -data i C++. Vi har sett på tre forskjellige eksempler for å demonstrere JSON -data -parsingmekanismen i C++. Sammenlignet med "Nlohmann" -biblioteket, er Rapidjson liten, rask og minnevennlig.