Što je JSON?
JSON je lagani tekstualni prikaz za organizirano pohranjivanje i prijenos strukturiranih podataka. JSON podaci su predstavljeni u obliku poredanih popisa i parova ključ / vrijednost. JSON je kratica JavaSkript Objekt Notacija. Kao što puni naziv naznačuje, izveden je iz JavaScript-a. 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 prikazati strukturirane podatke u JSON-u nego XML-u.
JSON pravilo sintakse
Evo pravila sintakse JSON:
- JSON podaci uvijek trebaju biti u obliku parova ključ / vrijednost.
- JSON Podaci su odvojeni zarezima.
- Kovrčava zagrada koristi se 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" je odgovarajuća vrijednost. Ključ, tj.e., "Ime" i vrijednost, tj.e., "Drake" su odvojeni dvotočkom.
Proširenje datoteke JSON
JSON podaci obično se pohranjuju u datoteku s nastavkom ".json ". Na primjer, da biste pohranili podatke o zaposleniku, datoteku možete jednostavno imenovati kao 'zaposlenik.json '. Ovo bi bila jednostavna tekstualna datoteka. Zatim ovu JSON datoteku možete otvoriti u bilo kojem od svojih omiljenih uređivača teksta.
JSON objekt
JSON objekt nije ništa drugo nego JSON podaci zatvoreni unutar kovrčavih 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 su predstavljeni kao parovi ključ / vrijednost. Ključ, tj.e., "Ime" i vrijednost, tj.e., "Drake" su odvojeni dvotočkom. U gornjem primjeru postoje četiri para ključ / vrijednost. Prva tipka je "Ime"; "Drake" je odgovarajuća vrijednost za to. Slično tome, "EmployeeID", "Phone" i "Department" su ostale tri tipke.
JSON niz
JSON niz može sadržavati nekoliko JSON objekata odvojenih zarezom. JSON niz zatvoren je u uglatu zagradu. Pogledajmo primjer JSON polja:
"Studenti": ["firstName": "Sean", "lastName": "Brown",
"firstName": "Drake", "lastName": "Williams",
"firstName": "Tom", "lastName": "Miller",
"FirstName": "Peter", "lastName": "Johnson"
]
Ovo je primjer JSON polja. Ovdje je "Studenti" zatvoreni uglastim zagradama, tj.e., polje, a sadrži četiri JSON objekta. Svaki od ovih objekata predstavljen je u obliku parova ključ / vrijednost i odvojen je zarezom.
Uzorak JSON datoteke
Sada, budući da smo razumjeli JSON podatke, JSON objekte, JSON niz, pogledajmo primjer JSON datoteke:
"FirstName": "Sean",
"LastName": "Smeđe",
“Student ID”: 21453,
“Odjel”: “Računalni sc.",
"Predmeti": ["Matematika", "Phy", "Chem"]
Raščlanjivanje knjižnica u C ++:
Ne postoji izvorno rješenje za raščlanjivanje JSON podataka u C-u++. Međutim, postoji nekoliko knjižnica za raščlanjivanje JSON podataka u C-u++. U ovom ćemo članku proučiti dvije najpopularnije knjižnice za raščlanjivanje JSON podataka u C++. Evo GitHub veza za raščlanjivanje JSON podataka:
- https: // github.com / nlohmann / json
- https: // github.com / Tencent / rapidjson /
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 knjižnica za raščlanjivanje. Pogledajmo sada nekoliko primjera za raščlanjivanje JSON podataka u C ++:
- Primjer-1: Analizirajte JSON u C++
- Primjer-2: Analizirajte i serializirajte JSON u C++
- Primjer-3: Analizirajte JSON u C++
Za Primjere-1 i Primjer-2 upotrijebit ćemo knjižnicu "nlohmann". U slučaju Primjera-3, koristit ćemo knjižnicu "RapidJSON".
Primjer-1: Analizirajte JSON u C++
U ovom primjeru programa pokazat ćemo kako pristupiti vrijednostima JSON podataka u C-u++.
#include#include "json.hpp "
pomoću json = nlohmann :: json;
int main ()
// jdZaposlenici
json jdZaposlenici =
"firstName", "Sean",
"lastName", "Brown",
"StudentID", 21453,
"Odjel", "Računalni sc."
;
// Pristup vrijednostima
std :: string fName = jdZaposlenici.vrijednost ("firstName", "ups");
std :: string lName = jdZaposlenici.vrijednost ("lastName", "ups");
int sID = jdZaposlenici.vrijednost ("StudentID", 0);
std :: string dept = jdZaposlenici.vrijednost ("Odjel", "ups");
// Ispis vrijednosti
std :: cout << "First Name: " << fName << std::endl;
std :: cout << "Last Name: " << lName << std::endl;
std :: cout << "Student ID: " << sID << std::endl;
std :: cout << "Department: " << dept << std::endl;
return 0;
Primjer-2: Analizirajte i serializirajte JSON u C++
U ovom primjeru programa vidjet ćemo kako raščlaniti i serializirati JSON u C-u++. Koristimo “json :: parse ()” za raščlanjivanje JSON podataka.
#include#include "json.hpp "
#include
pomoću json = nlohmann :: json;
int main ()
// Evo JSON teksta
char char [] = R "(
"Knjiga":
"Širina": 450,
"Visina": 30,
"Naslov": "Pozdrav svijetu",
"isBiography": netačno,
"NumOfCopies": 4,
"LibraryIDs": [2319, 1406, 3854, 987]
) ";
// Analizirajmo i serializirajmo JSON
json j_complete = json :: parse (tekst);
std :: cout << std::setw(4) << j_complete << std::endl;
Primjer-3: Analizirajte JSON u C++
Sada ćemo pokazati kako raščlaniti JSON niz pomoću knjižnice RapidJSON. RapidJSON je izvorno inspiriran RapidXML-om. U ovom primjeru programa raščlanjujemo JSON niz u DOM. Proglasili smo "mydoc" tipa "Document", a zatim koristimo "mydoc.metoda parse () ”za raščlanjivanje JSON niza.
#include#include "rapidjson / writer.h "
#include "rapidjson / document.h "
#include "rapidjson / stringbuffer.h "
pomoću prostora imena rapidjson;
int main ()
const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
"odjel": "Računalni sc."";
// Analizirajte JSON niz u DOM
Dokument mydoc;
mydoc.Raščlanjivanje (json);
// DOM u niz
StringBuffer međuspremnik;
Pisac
mydoc.Prihvati (pisac);
// Ispis rezultata
std :: cout << buffer.GetString() << std::endl;
return 0;
Zaključak
U ovom smo članku ukratko razmotrili JSON podatke, objekt, niz i sintaksu. Kao što znamo, u C ++ ne postoji izvorno rješenje za raščlanjivanje podataka JSON; koristili smo dvije različite knjižnice za raščlanjivanje JSON podataka u C++. Istražili smo tri različita primjera kako bismo demonstrirali JSON mehanizam raščlanjivanja podataka u C-u++. U usporedbi s bibliotekom "nlohmann", RapidJSON je mali, brz i prilagođen memoriji.