Kā parsēt JSON C ++

How Parse Json C



Šīs apmācības mērķis ir saprast JSON datus un to, kā parsēt JSON datus C ++. Mēs apspriedīsim JSON datus, objektu, masīvu, JSON sintaksi un pēc tam apskatīsim vairākus darba piemērus, lai saprastu JSON datu parsēšanas mehānismu C ++.

Kas ir JSON?

JSON ir viegls teksta attēlojums strukturētu datu uzglabāšanai un pārsūtīšanai organizētā veidā. JSON dati tiek attēloti sakārtotu sarakstu un atslēgu vērtību pāru veidā. JSON nozīmē ava S kripta VAI bject N otācija. Kā norāda pilns nosaukums, tas ir atvasināts no JavaScript. Tomēr JSON dati tiek atbalstīti lielākajā daļā populāro programmēšanas valodu.







To bieži izmanto, lai pārsūtītu datus no servera uz tīmekļa lapu. Ir daudz vieglāk un tīrāk attēlot strukturētos datus JSON nekā XML.



JSON sintakses noteikums

Šeit ir JSON sintakses noteikumi:



  1. JSON datiem vienmēr jābūt atslēgu un vērtību pāriem.
  2. JSON dati ir atdalīti ar komatiem.
  3. Cirtaini skavas tiek izmantotas, lai attēlotu JSON objektu.
  4. Kvadrātiekava tiek izmantota, lai attēlotu JSON masīvu.

Kas ir JSON dati?

JSON dati tiek attēloti atslēgu un vērtību pāru veidā. Tas ir līdzīgi vārdnīcai vai jaukšanai citās programmēšanas valodās.





Nosaukums: Dreiks

Šis ir vienkāršu JSON datu piemērs. Šeit galvenais ir vārds, un Dreiks ir atbilstošā vērtība. Atslēgu, t.i., vārdu un vērtību, t.i., Dreiku atdala ar kolu.



JSON faila paplašinājums

JSON dati parasti tiek saglabāti failā ar paplašinājumu .json. Piemēram, lai saglabātu darbinieka datus, varat vienkārši nosaukt failu kā “darbinieks.json”. Tas būtu vienkāršs teksta fails. Pēc tam varat atvērt šo JSON failu jebkurā no iecienītākajiem teksta redaktoriem.

JSON objekts

JSON objekts ir nekas cits kā cirtainās iekavās ietvertie JSON dati. Šeit ir JSON objekta paraugs:

{
Vārds:Dreiks,
darbinieka ID:23547a,
Tālrunis: 23547,
nodaļa:Finanses
}

JSON objekts var saturēt vairākus JSON datus. Katrs JSON dati ir atdalīti ar komatu. JSON dati tiek attēloti kā atslēgu vērtību pāri. Atslēgu, t.i., vārdu un vērtību, t.i., Dreiku atdala ar kolu. Iepriekš minētajā piemērā ir četri atslēgu un vērtību pāri. Pirmā atslēga ir Vārds; Dreiks ir tam atbilstošā vērtība. Līdzīgi EmployeeID, Phone un Department ir pārējās trīs atslēgas.

JSON masīvs

JSON masīvā var būt vairāki ar komatiem atdalīti JSON objekti. JSON masīvs ir iekļauts kvadrātiekavās. Apskatīsim JSON masīva piemēru:

'Studenti':[
{'vārds':'Šons', 'uzvārds':'Brūns'},
{'vārds':'Dreiks', 'uzvārds':'Viljamss'},
{'vārds':'Toms', 'uzvārds':'Millers'},
{vārds:Pēteris,uzvārds:Džonsons}
]

Šis ir JSON masīva piemērs. Šeit studenti ir iekļauti kvadrātiekavās, t.i., masīvā, un tajā ir četri JSON objekti. Katrs no šiem objektiem ir attēlots atslēgu un vērtību pāru veidā un ir atdalīts ar komatu.

JSON faila paraugs

Tagad, kad mēs sapratām JSON datus, JSON objektus, JSON masīvu, apskatīsim JSON faila piemēru:

{
vārds:Šons,
uzvārds:Brūns,
Studenta ID: 21453,
nodaļa:Dators Sc.,
Tēmas:[Matemātika,Phy,Chem]
}

Bibliotēku parsēšana C ++:

Nav vietējā risinājuma JSON datu parsēšanai C ++. Tomēr ir vairākas bibliotēkas, lai analizētu JSON datus C ++. Šajā rakstā mēs apskatīsim divas populārākās bibliotēkas, lai parsētu JSON datus C ++. Šeit ir GitHub saites JSON datu parsēšanai:

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

Iespējams, vēlēsities lejupielādēt šīs bibliotēkas, lai varētu izpildīt tālāk redzamos piemērus.

Piemēri

Tagad mums ir pamatzināšanas par JSON datiem, objektiem, masīviem un pieejamajām parsēšanas bibliotēkām. Tagad apskatīsim pāris piemērus, lai parsētu JSON datus C ++:

  • 1. piemērs: analizējiet JSON C ++
  • 2. piemērs: Parsējiet un serializējiet JSON C ++
  • 3. piemērs: analizējiet JSON C ++

Piemēram 1 un 2, mēs izmantosim nlohmann bibliotēku. Piemēra-3 gadījumā mēs izmantosim RapidJSON bibliotēku.

1. piemērs: analizējiet JSON C ++

Šajā programmas paraugā mēs parādīsim, kā piekļūt JSON datu vērtībām C ++.

#iekļaut
#include 'json.hpp'

izmantojot json=nlohmann::json;

intgalvenais()
{

// jdDarbinieki
json jdDarbinieki=
{
{'vārds','Šons'},
{'uzvārds','Brūns'},
{“StudentID”,21453},
{'Nodaļa','Dators Sc.'}
};

// Piekļūstiet vērtībām
stundas::virknefVārds=jdDarbinieki.vērtību('vārds', 'Ups');
stundas::virknelVārds=jdDarbinieki.vērtību('uzvārds', 'Ups');
intsID=jdDarbinieki.vērtību(“StudentID”, 0);
stundas::virknedziļums=jdDarbinieki.vērtību('Nodaļa', 'Ups');

// Drukājiet vērtības
stundas::izmaksas << 'Vārds: ' <<fVārds<<stundas::endl;
stundas::izmaksas << 'Uzvārds: ' <<lVārds<<stundas::endl;
stundas::izmaksas << 'Studenta ID:' <<sID<<stundas::endl;
stundas::izmaksas << 'Nodaļa: ' <<dziļums<<stundas::endl;

atgriezties 0;
}

2. piemērs: Parsējiet un serializējiet JSON C ++

Šajā programmas piemērā mēs redzēsim, kā parsēt un sērijveidot JSON C ++. Mēs izmantojam json :: parse (), lai parsētu JSON datus.

#iekļaut
#include 'json.hpp'
#iekļaut

izmantojot json=nlohmann::json;

intgalvenais()
{
// Šeit ir JSON teksts
charteksts[] =R'(
{
'
Grāmata': {
'
Platums': 450,
'
Augstums': 30,
'
Nosaukums':'Sveika pasaule',
'
isBiogrāfija': nepatiesa,
'
NumOfCopies': 4,
'
Bibliotēkas ID': [2319, 1406, 3854, 987]
}
}
) ''
;

// Parsēsim un serializēsim JSON
json j_complete=json::parsēt(teksts);
stundas::izmaksas <<stundas::sataisīt(4) <<j_pabeigts<<stundas::endl;
}

3. piemērs: analizējiet JSON C ++

Tagad mēs parādīsim, kā parsēt JSON virkni, izmantojot RapidJSON bibliotēku. RapidJSON sākotnēji iedvesmoja RapidXML. Šajā programmas paraugā mēs parsējam JSON virkni DOM. Mēs esam deklarējuši dokumenta tipa mydoc un pēc tam, izmantojot metodi mydoc.parse (), lai parsētu JSON virkni.

#iekļaut
#include 'rapidjson/written.h'
#include 'rapidjson/document.h'
#include 'rapidjson/stringbuffer.h'

izmantojot nosaukumvietu rapidjson;

intgalvenais()
{

konst char*json= '{'vārds':'Šons','uzvārds':'Brūns','empId': 21453,
'
nodaļa':'Dators Sc.'}';

// Parsējiet JSON virkni DOM
Dokuments mydoc;
mydoc.Parsēt(json);

// DOM uz virkni
StringBuffer buferis;
rakstnieks<StringBuffer>rakstnieks(buferšķīdums);

mydoc.Pieņemt(rakstnieks);

// Izdrukājiet izvadi
stundas::izmaksas <<buferšķīdums.GetString() <<stundas::endl;

atgriezties 0;
}

Secinājums

Šajā rakstā mēs īsi apspriedām JSON dati, objekts, masīvs un sintakse. Kā mēs zinām, nav vietējā risinājuma JSON datu parsēšanai C ++; mēs esam izmantojuši divas dažādas bibliotēkas, lai parsētu JSON datus C ++. Mēs apskatījām trīs dažādus piemērus, lai parādītu JSON datu parsēšanas mehānismu C ++. Salīdzinot ar nlohmann bibliotēku, RapidJSON ir mazs, ātrs un atmiņai draudzīgs.