Hvordan analysere JSON i C ++

How Parse Json C



Intensjonen med denne opplæringen er å forstå JSON -dataene og hvordan du kan analysere JSON -data i C ++. Vi vil diskutere JSON -data, Object, Array, JSON -syntaks, og deretter gå gjennom flere arbeidseksempler for å forstå analysemekanismen for 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økkelverdi-par. JSON står for J ava S kryptering ELLER bject N uttale. Som hele navnet indikerer, er det avledet fra JavaScript. Imidlertid støttes JSON -data i de fleste av de populære programmeringsspråkene.







Det brukes ofte til å overføre dataene fra serveren til en webside. Det er mye lettere 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økkel-verdi-par.
  2. JSON Data er atskilt med kommaer.
  3. En krøllbøyle brukes til å representere JSON Object.
  4. En firkantet brakett brukes til å representere en JSON -matrise.

Hva er JSON -data?

JSON-dataene er representert i form av nøkkel-verdi-par. Dette ligner på en ordbok eller hash 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, dvs. navn og verdi, dvs. Drake er atskilt med et kolon.



Filendelsen JSON

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 hvilken som helst av dine favoritt tekstredigerere.

JSON Object

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

{
Navn:Drake,
Ansatt ID:23547a,
Telefon: 23547,
Avdeling:Finansiere
}

Et JSON -objekt kan inneholde flere JSON -data. Hver JSON -data er atskilt med et komma. JSON-data er representert som nøkkel-verdi-par. Nøkkelen, dvs. navn og verdi, dvs. Drake er atskilt med et kolon. I eksemplet ovenfor er det fire nøkkelverdi-par. Den første nøkkelen er Navn; Drake er den tilsvarende verdien for den. Tilsvarende er EmployeeID, Phone og Department de tre andre nøklene.

JSON Array

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

'Studenter':[
{'fornavn':'Sean', 'etternavn':'Brun'},
{'fornavn':'Drake', 'etternavn':'Williams'},
{'fornavn':'Tom', 'etternavn':'Miller'},
{fornavn:Peter,etternavn:Johnson}
]

Dette er et eksempel på en JSON -matrise. Her er studenter omsluttet av en firkantet parentes, dvs. array, og den inneholder fire JSON -objekter. Hvert av disse objektene er representert i form av nøkkelverdi-par og er atskilt med et komma.

En prøve JSON -fil

Siden vi nå forsto JSON -data, JSON -objekter, JSON -matrise, la oss se på et eksempel på en JSON -fil:

{
fornavn:Sean,
etternavn:brun,
Student ID: 21453,
Avdeling:Datamaskin Sc.,
Emner:[Matte,Phy,Chem]
}

Analyse av biblioteker i C ++:

Det er ingen integrert 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 nedenfor.

Eksempler

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

  • Eksempel 1: Analyser JSON i C ++
  • Eksempel 2: Parser og serialiser JSON i C ++
  • Eksempel 3: Analyser JSON i C ++

For eksempel 1 og eksempel 2 skal vi bruke nlohmann-biblioteket. I eksempel 3 vil vi bruke RapidJSON-biblioteket.

Eksempel 1: Analyser JSON i C ++

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

#inkludere
#include 'json.hpp'

bruker json=nlohmann::json;

inthoved-()
{

// jdEmployees
json jdAnsatte=
{
{'fornavn','Sean'},
{'etternavn','Brun'},
{'Student ID',21453},
{'Avdeling','Datamaskin Sc.'}
};

// Få tilgang til verdiene
timer::strengfName=jdAnsatte.verdi('fornavn', 'oops');
timer::strengl Navn=jdAnsatte.verdi('etternavn', 'oops');
intsID=jdAnsatte.verdi('Student ID', 0);
timer::strenggjeld=jdAnsatte.verdi('Avdeling', 'oops');

// Skriv ut verdiene
timer::koste << 'Fornavn: ' <<fName<<timer::endl;
timer::koste << 'Etternavn: ' <<l Navn<<timer::endl;
timer::koste << 'Student ID: ' <<sID<<timer::endl;
timer::koste << 'Avdeling:' <<gjeld<<timer::endl;

komme tilbake 0;
}

Eksempel 2: Analyser og serialiser JSON i C ++

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

#inkludere
#include 'json.hpp'
#inkludere

bruker json=nlohmann::json;

inthoved-()
{
// Her er en JSON -tekst
røyetekst[] =R'(
{
'
Bok': {
'
Bredde': 450,
'
Høyde': 30,
'
Tittel':'Hei Verden',
'
erBiografi': falsk,
'
NumOfCopies': 4,
'
LibraryIDs': [2319, 1406, 3854, 987]
}
}
) '
;

// La oss analysere og serialisere JSON
json j_complete=json::analysere(tekst);
timer::koste <<timer::setw(4) <<j_complete<<timer::endl;
}

Eksempel 3: Analyser JSON i C ++

Nå vil vi demonstrere hvordan du kan analysere JSON -strengen 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 bruker deretter metoden mydoc.parse () til å analysere JSON -strengen.

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

ved hjelp av navneområdet rapidjson;

inthoved-()
{

konst røye*json= '{'fornavn':'Sean','etternavn':'brun','empId': 21453,
'
avdeling':'Datamaskin Sc.'}';

// Analyser JSON -strengen i DOM
Dokument mydoc;
mydoc.Analyse(json);

// DOM til streng
StringBuffer buffer;
Forfatter<StringBuffer>forfatter(buffer);

mydoc.Aksepterer(forfatter);

// Skriv ut utskriften
timer::koste <<buffer.GetString() <<timer::endl;

komme tilbake 0;
}

Konklusjon

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