C ++

Kako raščlaniti JSON u C ++

Kako raščlaniti JSON u C ++
Namjera ovog vodiča je razumjeti JSON podatke i kako raščlaniti JSON podatke u C-u++. Razgovarat ćemo o JSON podacima, Object, Array, JSON sintaksi, a zatim ćemo proći kroz nekoliko radnih primjera kako bismo razumjeli mehanizam raščlanjivanja JSON podataka u C++.

Š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:

  1. JSON podaci uvijek trebaju biti u obliku parova ključ / vrijednost.
  2. JSON Podaci su odvojeni zarezima.
  3. Kovrčava zagrada koristi se za predstavljanje JSON objekta.
  4. 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:

  1. https: // github.com / nlohmann / json
  2. 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 ++:

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 pisač (međuspremnik);
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.

Zamijenite svoje tipke miša različito za različiti softver pomoću X-Mouse Button Control
Možda vam treba alat koji bi mogao promijeniti kontrolu miša sa svakom aplikacijom koju koristite. Ako je to slučaj, možete isprobati aplikaciju pod n...
Microsoft Sculpt Touch bežični miš pregled
Nedavno sam čitao o Microsoft Sculpt Touch bežični miš i odlučio ga kupiti. Nakon što sam ga neko vrijeme koristio, odlučio sam s njim podijeliti svoj...
Trackpad i pokazivač miša na ekranu AppyMouse za Windows tablete
Korisnicima tableta često nedostaje pokazivač miša, posebno kada su navični koristiti prijenosna računala. Pametni telefoni i tableti osjetljivi na do...