Što je JSON?
JSON je lagani tekstualni prikaz za pohranu i prijenos strukturiranih podataka na organiziran način. JSON podaci predstavljeni su u obliku uređenih popisa i parova ključ-vrijednost. JSON je kratica za J ava S bogalj ILI bject N otacija. Kao što puno ime ukazuje, izvedeno je iz JavaScripta. Međutim, JSON podaci podržani su u većini popularnih programskih jezika.
Često se koristi za prijenos podataka s poslužitelja na web stranicu. Mnogo je lakše i čišće predstavljati strukturirane podatke u JSON -u nego u XML -u.
Pravilo sintakse JSON
Evo pravila sintakse JSON:
- JSON podaci uvijek trebaju biti u obliku parova ključ / vrijednost.
- JSON podaci odvajaju se zarezima.
- Curly zagrada se koristi za predstavljanje JSON objekta.
- Uglata zagrada koristi se za predstavljanje JSON niza.
Što su JSON podaci?
JSON podaci predstavljeni su u obliku parova ključ / vrijednost. Ovo je slično rječniku ili hashu u drugim programskim jezicima.
Ime: Drake
Ovo je primjer jednostavnih JSON podataka. Ovdje je ključ Ime, a Drake odgovarajuća vrijednost. Ključ, tj. Ime i vrijednost, tj. Drake odvojeni su dvotočkom.
JSON nastavak datoteke
JSON podaci obično se pohranjuju u datoteku s nastavkom .json. Na primjer, za pohranu podataka o zaposleniku datoteku možete jednostavno nazvati 'zaposlenik.json'. Ovo bi bila jednostavna tekstualna datoteka. Zatim možete otvoriti ovu JSON datoteku u bilo kojem od svojih omiljenih uređivača teksta.
JSON objekt
JSON objekt nije ništa drugo nego JSON podaci zatvoreni unutar uvrnutih zagrada. Evo primjera JSON objekta:
{Ime:Drake,
ID zaposlenika:23547a,
Telefon: 23547,
Odjel:Financije
}
JSON objekt može sadržavati više JSON podataka. Svaki JSON podatak odvojen je zarezom. JSON podaci predstavljeni su kao parovi ključ / vrijednost. Ključ, tj. Ime i vrijednost, tj. Drake odvojeni su dvotočkom. U gornjem primjeru postoje četiri para ključ / vrijednost. Prvi ključ je Ime; Drake je odgovarajuća vrijednost za to. Slično, EmployeeID, Phone i Department su ostala tri ključa.
JSON niz
JSON niz može sadržavati nekoliko JSON objekata odvojenih zarezima. JSON niz zatvoren je u uglastu zagradu. Pogledajmo primjer JSON niza:
'Studenti':[{'ime':'Sean', 'prezime':'Smeđa'},
{'ime':'Drake', 'prezime':'Williams'},
{'ime':'Tom', 'prezime':'Mlinar'},
{ime:Petar,prezime:Johnson}
]
Ovo je primjer JSON niza. Ovdje je Student zatvoren uglastom zagradom, tj. Nizom i sadrži četiri JSON objekta. Svaki od ovih objekata predstavljen je u obliku parova ključ-vrijednost i odvojen je zarezom.
Primjer JSON datoteke
Budući da smo razumjeli JSON podatke, JSON objekte, JSON niz, pogledajmo primjer JSON datoteke:
{ime:Sean,
prezime:Smeđa,
studentska iskaznica: 21453,
Odjel:Računalo Sc.,
Predmeti:[Matematika,Phy,Chem]
}
Raščlanjivanje knjižnica u C ++:
Ne postoji izvorno rješenje za raščlanjivanje JSON podataka u C ++. Međutim, postoji nekoliko knjižnica za raščlanjivanje JSON podataka u C ++. U ovom članku ćemo pogledati dvije najpopularnije knjižnice za raščlanjivanje JSON podataka u C ++. Evo GitHub veza za raščlanjivanje JSON podataka:
Možda ćete htjeti preuzeti ove knjižnice kako biste mogli izvršiti dolje prikazane primjere.
Primjeri
Sada imamo osnovno razumijevanje JSON podataka, objekata, nizova i dostupnih biblioteka za raščlanjivanje. Pogledajmo sada nekoliko primjera za raščlanjivanje JSON podataka u C ++:
- Primjer-1: Raščlanite JSON u C ++
- Primjer-2: Raščlanite i serijalizirajte JSON u C ++
- Primjer-3: Raščlanite JSON u C ++
Za Primjere-1 i Primjere-2 koristit ćemo se nlohmann knjižnicom. U slučaju Primjera 3, koristit ćemo knjižnicu RapidJSON.
Primjer-1: Raščlanite JSON u C ++
U ovom primjeru programa pokazat ćemo kako pristupiti vrijednostima JSON podataka u C ++.
#uključi#include 'json.hpp'
koristeći json=nlohmann::json;
intglavni()
{
// jdZaposlenici
json jdZaposlenici=
{
{'ime','Sean'},
{'prezime','Smeđa'},
{'Studentska iskaznica',21453},
{'Odjel','Računalno sc.'}
};
// Pristupite vrijednostima
sati::nizfNaziv=jdZaposlenici.vrijednost('ime', 'ups');
sati::nizlIme=jdZaposlenici.vrijednost('prezime', 'ups');
intsID=jdZaposlenici.vrijednost('Studentska iskaznica', 0);
sati::nizdubina=jdZaposlenici.vrijednost('Odjel', 'ups');
// Ispis vrijednosti
sati::trošak << 'Ime: ' <<fNaziv<<sati::endl;
sati::trošak << 'Prezime: ' <<lIme<<sati::endl;
sati::trošak << 'Studentska iskaznica: ' <<sID<<sati::endl;
sati::trošak << 'Odjel:' <<dubina<<sati::endl;
povratak 0;
}
Primjer-2: Raščlanite i serijalizirajte JSON u C ++
U ovom primjeru programa ćemo vidjeti kako raščlaniti i serijalizirati JSON u C ++. Za raščlanjivanje JSON podataka koristimo json :: parse ().
#uključi#include 'json.hpp'
#uključi
koristeći json=nlohmann::json;
intglavni()
{
// Ovdje je JSON tekst
chartekst[] =R'(
{
'Knjiga': {
'Širina': 450,
'Visina': 30,
'Titula':'Pozdrav svijete',
'jeBiografija': false,
'NumOfCopies': 4,
'ID knjižnice': [2319, 1406, 3854, 987]
}
}
) ';
// Analizirajmo i serijaliziramo JSON
json j_kompletno=json::raščlaniti(tekst);
sati::trošak <<sati::setw(4) <<j_kompletno<<sati::endl;
}
Primjer-3: Raščlanite JSON u C ++
Sada ćemo pokazati kako raščlaniti niz JSON pomoću knjižnice RapidJSON. RapidJSON je izvorno inspiriran RapidXML -om. U ovom primjeru programa raščlanjujemo JSON niz u DOM. Deklarirali smo mydoc tipa Document, a zatim smo pomoću metode mydoc.parse () analizirali niz JSON.
#uključi#uključuje 'rapidjson/writer.h'
#include 'rapidjson/document.h'
#include 'rapidjson/stringbuffer.h'
pomoću prostora imena rapidjson;
intglavni()
{
konst char*json= '{'ime':'Sean','prezime':'Smeđa','empId': 21453,
'odjel':'Računalo Sc.'}';
// Raščlanite niz JSON u DOM
Dokumentiraj mydoc;
mydoc.Raščlaniti(json);
// DOM u niz
StringBuffer međuspremnik;
Pisac<StringBuffer>pisac(pufer);
mydoc.Prihvatiti(pisac);
// Ispis ispisa
sati::trošak <<pufer.GetString() <<sati::endl;
povratak 0;
}
Zaključak
U ovom smo članku ukratko raspravljali JSON podatke, objekt, niz i sintaksu. Kao što znamo, ne postoji izvorno rješenje za raščlanjivanje podataka JSON -a u C ++; koristili smo dvije različite knjižnice za raščlanjivanje JSON podataka u C ++. Pogledali smo tri različita primjera kako bismo demonstrirali JSON mehanizam za raščlanjivanje podataka u C ++. U usporedbi s nlohmann knjižnicom, RapidJSON je mali, brz i prilagođen memoriji.