Kako razčleniti JSON v C ++

How Parse Json C



Namen te vadnice je razumeti podatke JSON in kako razčleniti podatke JSON v C ++. Razpravljali bomo o podatkih JSON, Objektu, Arrayu, sintaksi JSON, nato pa preučili več delovnih primerov, da bi razumeli mehanizem razčlenjevanja podatkov JSON v C ++.

Kaj je JSON?

JSON je lahka predstavitev na osnovi besedila za organizirano shranjevanje in prenos strukturiranih podatkov. Podatki JSON so predstavljeni v obliki urejenih seznamov in parov ključ-vrednost. JSON pomeni J ava S cript ALI bject N otacija. Kot kaže polno ime, izhaja iz JavaScripta. Podatki JSON pa so podprti v večini priljubljenih programskih jezikov.







Pogosto se uporablja za prenos podatkov s strežnika na spletno stran. Strukturirane podatke v JSON je veliko lažje in jasneje kot v XML.



Pravilo sintakse JSON

Tu so pravila sintakse JSON:



  1. Podatki JSON morajo biti vedno v obliki parov ključ-vrednost.
  2. Podatki JSON so ločeni z vejicami.
  3. Za predstavitev objekta JSON se uporablja kodrast naramnik.
  4. Kvadratni oklepaj se uporablja za predstavitev matrike JSON.

Kaj so podatki JSON?

Podatki JSON so predstavljeni v obliki parov ključ-vrednost. To je podobno slovarju ali hashu v drugih programskih jezikih.





Ime: Drake

To je primer preprostih podatkov JSON. Ključ tukaj je Ime in Drake je ustrezna vrednost. Ključ, torej ime in vrednost, to je Drake, sta ločena z dvopičjem.



Razširitev datoteke JSON

Podatki JSON so običajno shranjeni v datoteki s končnico .json. Na primer, če želite shraniti podatke o zaposlenem, lahko datoteko preprosto poimenujete kot 'zaposleni.json'. To bi bila preprosta besedilna datoteka. Nato lahko datoteko JSON odprete v katerem koli od vaših najljubših urejevalnikov besedil.

Objekt JSON

Objekt JSON ni nič drugega kot podatki JSON, zaprti v zavite oklepaje. Tukaj je vzorec objekta JSON:

{
Ime:Drake,
ID zaposlenega:23547a,
Telefon: 23547,
Oddelek:Finance
}

Objekt JSON lahko vsebuje več podatkov JSON. Vsi podatki JSON so ločeni z vejico. Podatki JSON so predstavljeni kot pari ključ-vrednost. Ključ, torej ime in vrednost, to je Drake, sta ločena z dvopičjem. V zgornjem primeru obstajajo štirje pari ključ-vrednost. Prvi ključ je Ime; Drake je zanj ustrezna vrednost. Podobno so drugi trije ključi EmployeeID, Phone in Department.

Niz JSON

Niz JSON lahko vsebuje več objektov JSON, ločenih z vejicami. Niz JSON je zaprt v oglatem oklepaju. Poglejmo primer matrike JSON:

'Študenti':[
{'ime':'Sean', 'priimek':'Rjav'},
{'ime':'Drake', 'priimek':'Williams'},
{'ime':'Tom', 'priimek':'Miller'},
{ime:Peter,priimek:Johnson}
]

To je primer matrike JSON. Tu je študent obdan s kvadratnim oklepajem, torej matriko, in vsebuje štiri objekte JSON. Vsak od teh objektov je predstavljen v obliki parov ključ-vrednost in je ločen z vejico.

Primer datoteke JSON

Zdaj, ko smo razumeli podatke JSON, objekte JSON, matriko JSON, poglejmo primer datoteke JSON:

{
ime:Sean,
priimek:rjav,
Študentska izkaznica: 21453,
Oddelek:Računalniški sc.,
Predmeti:[Matematika,Phy,Kemija]
}

Razčlenjevanje knjižnic v C ++:

Ni izvorne rešitve za razčlenjevanje podatkov JSON v C ++. Vendar pa obstaja več knjižnic za razčlenjevanje podatkov JSON v C ++. V tem članku bomo preučili dve najbolj priljubljeni knjižnici za razčlenitev podatkov JSON v C ++. Tu so povezave GitHub za razčlenjevanje podatkov JSON:

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

Morda boste želeli prenesti te knjižnice, da boste lahko izvedli spodnje primere.

Primeri

Zdaj imamo osnovno razumevanje podatkov, predmetov, nizov in razpoložljivih knjižnic za razčlenjevanje JSON. Zdaj pa poglejmo nekaj primerov za razčlenitev podatkov JSON v C ++:

  • Primer-1: Razčlenite JSON v C ++
  • Primer-2: Razčlenite in serijalizirajte JSON v C ++
  • Primer-3: Razčlenite JSON v C ++

Za primer-1 in primer-2 bomo uporabili knjižnico nlohmann. V primeru primera 3 bomo uporabili knjižnico RapidJSON.

Primer-1: Razčlenite JSON v C ++

V tem primeru programa bomo pokazali, kako dostopati do vrednosti podatkov JSON v C ++.

#vključi
#include 'json.hpp'

z uporabo json=nlohmann::json;

intglavni()
{

// jdZaposleni
json jdZaposleni=
{
{'ime','Sean'},
{'priimek','Rjav'},
{'StudentID',21453},
{'Oddelek','Računalniški sc.'}
};

// Dostop do vrednosti
ure::vrvicafName=jdZaposleni.vrednost('ime', 'oops');
ure::vrvicalIme=jdZaposleni.vrednost('priimek', 'oops');
intsID=jdZaposleni.vrednost('StudentID', 0);
ure::vrvicaoddelek=jdZaposleni.vrednost('Oddelek', 'oops');

// Natisnite vrednosti
ure::stroški << 'Ime: ' <<fName<<ure::endl;
ure::stroški << 'Priimek: ' <<lIme<<ure::endl;
ure::stroški << 'Študentska izkaznica:' <<sID<<ure::endl;
ure::stroški << 'Oddelek:' <<oddelek<<ure::endl;

vrnitev 0;
}

Primer-2: Razčlenite in serijalizirajte JSON v C ++

V tem primeru bomo videli, kako razčleniti in serializirati JSON v C ++. Za razčlenjevanje podatkov JSON uporabljamo json :: parse ().

#vključi
#include 'json.hpp'
#vključi

z uporabo json=nlohmann::json;

intglavni()
{
// Tukaj je besedilo JSON
charbesedilo[] =R'(
{
'
Knjiga': {
'
Premer': 450,
'
Višina': 30,
'
Naslov':'Pozdravljen, svet',
'
je biografija': false,
'
NumOfCopies': 4,
'
ID -ji knjižnice': [2319, 1406, 3854, 987]
}
}
) '
;

// Razčlenimo in serijalizirajmo JSON
json j_complete=json::razčleniti(besedilo);
ure::stroški <<ure::setw(4) <<j_complete<<ure::endl;
}

Primer-3: Razčlenite JSON v C ++

Zdaj bomo pokazali, kako razčleniti niz JSON s knjižnico RapidJSON. RapidJSON je prvotno navdihnil RapidXML. V tem primeru programa razlagamo niz JSON v DOM. Razglasili smo mydoc tipa Document in nato z metodo mydoc.parse () razčlenili niz JSON.

#vključi
#include 'rapidjson/writer.h'
#include 'rapidjson/document.h'
#include 'rapidjson/stringbuffer.h'

z imenskim prostorom rapidjson;

intglavni()
{

const char*json= '{'ime':'Sean','priimek':'rjav','empId': 21453,
'
oddelek':'Računalniški sc.'}';

// Razčlenite niz JSON v DOM
Dokumentiraj mydoc;
mydoc.Razčleni(json);

// DOM v niz
Vmesni pomnilnik StringBuffer;
Pisatelj<StringBuffer>pisatelj(pufra);

mydoc.Sprejmi(pisatelj);

// Natisnite izhod
ure::stroški <<pufra.GetString() <<ure::endl;

vrnitev 0;
}

Zaključek

V tem članku smo na kratko razpravljali JSON podatkov, objektov, matrike in skladnje. Kot vemo, za razčlenjevanje podatkov JSON v C ++ ni izvorne rešitve; za razčlenjevanje podatkov JSON v C ++ smo uporabili dve različni knjižnici. Za prikaz mehanizma razčlenjevanja podatkov JSON v C ++ smo preučili tri različne primere. RapidJSON je v primerjavi s knjižnico nlohmann majhen, hiter in pomnilniku prijazen.