Sådan analyseres JSON i C ++

How Parse Json C



Hensigten med denne vejledning er at forstå JSON -dataene og hvordan man analyserer JSON -data i C ++. Vi vil diskutere JSON -data, Object, Array, JSON -syntaks og derefter gå gennem flere eksempler på arbejde for at forstå analysemekanismen for JSON -data i C ++.

Hvad er JSON?

JSON er en let tekstbaseret repræsentation til lagring og overførsel af strukturerede data på en organiseret måde. JSON-dataene er repræsenteret i form af ordnede lister og nøgleværdipar. JSON står for J ava S krybbe ELLER bject N betænkning. Som det fulde navn angiver, stammer det fra JavaScript. JSON -data understøttes dog i de fleste af de populære programmeringssprog.







Det bruges ofte til at overføre data fra serveren til en webside. Det er meget lettere og renere at repræsentere de strukturerede data i JSON end XML.



JSON syntaksregel

Her er JSON -syntaksreglerne:



  1. JSON-data skal altid have form af nøgleværdipar.
  2. JSON Data adskilles med kommaer.
  3. En krøllet bøjle bruges til at repræsentere JSON Object.
  4. Et firkantet beslag bruges til at repræsentere et JSON -array.

Hvad er JSON -data?

JSON-dataene er repræsenteret i form af nøgleværdipar. Dette ligner en ordbog eller hash på andre programmeringssprog.





Navn: Drake

Dette er et eksempel på simple JSON -data. Nøglen her er Navn og Drake er den tilsvarende værdi. Nøglen, dvs. navn og værdi, dvs. Drake er adskilt af et kolon.



JSON filudvidelse

JSON -data gemmes normalt i filen med filtypen .json. For eksempel, for at gemme medarbejderens data, kan du ganske enkelt navngive filen som 'medarbejder.json'. Dette ville være en simpel tekstfil. Du kan derefter åbne denne JSON -fil i en hvilken som helst af dine foretrukne tekstredigerere.

JSON Object

JSON -objektet er intet andet end JSON -dataene, der er indeholdt i de krøllede seler. Her er et eksempel på JSON -objekt:

{
Navn:Drake,
Medarbejder-ID:23547a,
telefon: 23547,
Afdeling:Finansiere
}

Et JSON -objekt kan indeholde flere JSON -data. Hver JSON -data er adskilt med et komma. JSON-data repræsenteres som nøgle-værdipar. Nøglen, dvs. navn og værdi, dvs. Drake er adskilt af et kolon. I eksemplet ovenfor er der fire nøgleværdipar. Den første nøgle er Navn; Drake er den tilsvarende værdi for det. Tilsvarende er EmployeeID, Phone og Department de tre andre nøgler.

JSON Array

Et JSON-array kan indeholde flere kommaseparerede JSON-objekter. JSON -arrayet er lukket inden for en firkantet parentes. Lad os se på et eksempel på et JSON -array:

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

Dette er et eksempel på et JSON -array. Her er eleverne omsluttet af en firkantet parentes, dvs. array, og den indeholder fire JSON -objekter. Hvert af disse objekter er repræsenteret i form af nøgle-værdipar og er adskilt med et komma.

En prøve JSON -fil

Nu, da vi forstod JSON -data, JSON -objekter, JSON -array, lad os se på et eksempel på en JSON -fil:

{
fornavn:Sean,
efternavn:Brun,
studiekort: 21453,
Afdeling:Computer Sc.,
Emner:[Matematik,Phy,Chem]
}

Parsing Libraries i C ++:

Der er ingen indbygget løsning til analyse af JSON -data i C ++. Der er dog flere biblioteker til at analysere JSON -data i C ++. I denne artikel vil vi undersøge de to mest populære biblioteker for at analysere JSON -data i C ++. Her er GitHub -links til parsing af JSON -data:

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

Du vil måske downloade disse biblioteker for at kunne eksekvere eksemplerne nedenfor.

Eksempler

Nu har vi en grundlæggende forståelse af JSON -data, objekter, arrays og tilgængelige parsingsbiblioteker. Lad os nu se på et par eksempler til analyse af JSON -data i C ++:

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

For eksempel-1 og eksempel-2 vil vi gøre brug af nlohmann-biblioteket. I tilfælde af eksempel-3 vil vi bruge RapidJSON-biblioteket.

Eksempel-1: Parser JSON i C ++

I dette eksempelprogram vil vi demonstrere, hvordan man får adgang til værdier for JSON -data i C ++.

#omfatte
#include 'json.hpp'

ved hjælp af json=nlohmann::json;

intvigtigste()
{

// jdMedarbejdere
json jdMedarbejdere=
{
{'fornavn','Sean'},
{'efternavn','Brun'},
{'Studiekort',21453},
{'Afdeling','Computer Sc.'}
};

// Få adgang til værdierne
timer::snorfName=jdMedarbejdere.værdi('fornavn', 'ups');
timer::snorl Navn=jdMedarbejdere.værdi('efternavn', 'ups');
intsID=jdMedarbejdere.værdi('Studiekort', 0);
timer::snorafd=jdMedarbejdere.værdi('Afdeling', 'ups');

// Udskriv værdierne
timer::koste << 'Fornavn: ' <<fName<<timer::endl;
timer::koste << 'Efternavn: ' <<l Navn<<timer::endl;
timer::koste << 'Studiekort: ' <<sID<<timer::endl;
timer::koste << 'Afdeling:' <<afd<<timer::endl;

Vend tilbage 0;
}

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

I dette eksempelprogram skal vi se, hvordan vi kan analysere og serialisere JSON i C ++. Vi bruger json :: parse () til at analysere JSON -dataene.

#omfatte
#include 'json.hpp'
#omfatte

ved hjælp af json=nlohmann::json;

intvigtigste()
{
// Her er en JSON -tekst
forkælelsetekst[] =R'(
{
'
Bestil': {
'
Bredde': 450,
'
Højde': 30,
'
Titel':'Hej Verden',
'
er Biografi': falsk,
'
NumOfCopies': 4,
'
LibraryID'er': [2319, 1406, 3854, 987]
}
}
) '
;

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

Eksempel-3: Parser JSON i C ++

Nu vil vi demonstrere, hvordan man kan analysere JSON -streng ved hjælp af RapidJSON -biblioteket. RapidJSON blev oprindeligt inspireret af RapidXML. I dette eksempelprogram analyserer vi en JSON -streng i DOM. Vi har erklæret mydoc af typen Document og derefter ved hjælp af metoden mydoc.parse () til at analysere JSON -strengen.

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

ved hjælp af navneområde rapidjson;

intvigtigste()
{

konst forkælelse*json= '{'fornavn':'Sean','efternavn':'Brun','empId': 21453,
'
afdeling':'Computer Sc.'}';

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

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

mydoc.Acceptere(forfatter);

// Udskriv output
timer::koste <<buffer.GetString() <<timer::endl;

Vend tilbage 0;
}

Konklusion

I denne artikel har vi kort diskuteret JSON data, objekt, array og syntaks. Som vi ved, er der ingen indbygget løsning til JSON -dataanalyse i C ++; vi har brugt to forskellige biblioteker til at analysere JSON -data i C ++. Vi undersøgte tre forskellige eksempler for at demonstrere JSON -dataparseringsmekanismen i C ++. Sammenlignet med nlohmann-biblioteket er RapidJSON lille, hurtig og hukommelsesvenlig.