C ++

Hvordan analysere JSON i C ++

Hvordan analysere JSON i C ++
Hensikten med denne opplæringen er å forstå JSON-dataene og hvordan man analyserer JSON-data i C++. Vi vil diskutere JSON-data, Object, Array, JSON-syntaks, og deretter gå gjennom flere arbeidseksempler for å forstå parseringsmekanismen 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 ordnede lister og nøkkelverdipar. JSON står for JavaSkrypt Object Notasjon. Som det fulle navnet indikerer, er det hentet fra JavaScript. Imidlertid støttes JSON-data på de fleste av de populære programmeringsspråkene.

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

JSON syntaksregel

Her er JSONs syntaksregler:

  1. JSON Data skal alltid være i form av nøkkelverdipar.
  2. JSON Data skilles med komma.
  3. En krøllete brace brukes til å representere JSON Object.
  4. En firkantet parentes brukes til å representere en JSON Array.

Hva er JSON Data?

JSON-dataene er representert i form av nøkkelverdipar. Dette ligner på 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, i.e., "Drake" er atskilt med et kolon.

JSON Filutvidelse

JSON-dataene lagres normalt i filen med utvidelsen “.json ”. For eksempel, for å lagre den ansattes data, kan du bare navngi filen som 'ansatt.json '. Dette ville være en enkel tekstfil. Du kan deretter åpne denne JSON-filen i en hvilken som helst favoritt tekstredigerer.

JSON Objekt

JSON-objektet er ingenting annet enn JSON-dataene som er lukket i krøllete bukseseler. Her er et eksempel på et JSON-objekt:


“Navn”: ”Drake”,
“Medarbeider-ID”: “23547a”,
“Telefon”: “23547”,
“Avdeling”: “Økonomi”

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, i.e., "Drake" er atskilt med et 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 “EmployeeID”, “Phone” og “Department” de tre andre tastene.

JSON Array

En JSON-matrise kan inneholde flere kommaseparerte JSON-objekter. JSON-matrisen er lukket i en firkantet parentes. La oss se på et eksempel på et JSON-utvalg:

"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 parentes, i.e., array, og den inneholder fire JSON-objekter. Hver 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-objekter, JSON-array, la oss se på et eksempel på en JSON-fil:


“FirstName”: “Sean”,
“Etternavn”: “brun”,
“Student-ID”: 21453,
“Avdeling”: “Computer Sc.”,
"Emner": ["Matematikk", "Phy", "Chem"]

Parsing Biblioteker i C ++:

Det er ingen opprinnelig løsning for analyse av JSON-data i C++. Imidlertid er det flere biblioteker for å analysere JSON-data i C++. I denne artikkelen skal vi se på de to mest populære bibliotekene for å analysere JSON-data i C++. Her er GitHub-koblingene for analyse av 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 vist nedenfor.

Eksempler

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

For eksempel 1 og eksempel 2 skal vi bruke biblioteket “nlohmann”. I tilfelle eksempel 3 vil vi bruke biblioteket “RapidJSON”.

Eksempel 1: Analyse JSON i C++

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

#inkludere
# inkluderer "json.hpp "
bruker json = nlohmann :: json;
int main ()

// jdMedarbeidere
json jdMedarbeidere =

"fornavn", "Sean",
"etternavn", "brun",
"StudentID", 21453,
"Avdeling", "Computer Sc."
;
// Få tilgang til verdiene
std :: streng fName = jdMedarbeidere.verdi ("fornavn", "oops");
std :: streng lName = jdMedarbeidere.verdi ("etternavn", "oops");
int sID = jdMedarbeidere.verdi ("StudentID", 0);
std :: streng dept = jdMedarbeidere.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 serialisering av JSON i C++

I dette eksempelprogrammet skal vi se hvordan man analyserer og serialiserer JSON i C++. Vi bruker “json :: parse ()” for å analysere JSON-dataene.

#inkludere
# inkluderer "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",
"isBiography": falsk,
"NumOfCopies": 4,
"LibraryIDs": [2319, 1406, 3854, 987]


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

Eksempel 3: Analyse JSON i C++

Nå skal vi demonstrere hvordan du analyserer JSON-strenger ved hjelp av RapidJSON-biblioteket. RapidJSON ble opprinnelig inspirert av RapidXML. I dette eksempelprogrammet analyserer vi en JSON-streng i DOM. Vi har erklært “mydoc” av typen “Document” og deretter bruker “mydoc.parse () ”-metode for å analysere JSON-strengen.

#inkludere
# inkluderer "rapidjson / skribent.h "
#include "rapidjson / document.h "
#include "rapidjson / stringbuffer.h "
bruker navneområdet rapidjson;
int main ()

const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
"department": "Computer Sc."";
// Analiser JSON-strengen i DOM
Dokument mydoc;
mydoc.Parse (json);
// DOM til streng
StringBuffer buffer;
Forfatter skribent (buffer);
mydoc.Godta (forfatter);
// Skriv ut utdata
std :: cout << buffer.GetString() << std::endl;
retur 0;

Konklusjon

I denne artikkelen har vi kort diskutert JSON-data, objekt, array og syntaks. Som vi vet er det ingen innfødt løsning for JSON-dataparsering i C ++; Vi har brukt to forskjellige biblioteker for å analysere JSON-data i C++. Vi så på tre forskjellige eksempler for å demonstrere JSON-dataparseringsmekanismen i C++. Sammenlignet med "nlohmann" -biblioteket er RapidJSON liten, rask og minnevennlig.

Vulkan for Linux-brukere
Med hver nye generasjon grafikkort ser vi spillutviklere skyve grensene for grafisk troskap og komme et skritt nærmere fotorealisme. Men til tross for...
OpenTTD vs Simutrans
Å lage din egen transportsimulering kan være morsom, avslappende og ekstremt fristende. Derfor må du sørge for at du prøver så mange spill som mulig f...
OpenTTD Tutorial
OpenTTD er et av de mest populære forretningssimuleringsspillene der ute. I dette spillet må du lage en fantastisk transportvirksomhet. Du begynner im...