Kaj je JSON?
JSON je lahka besedilna predstavitev za organizirano shranjevanje in prenos strukturiranih podatkov. Podatki JSON so predstavljeni v obliki urejenih seznamov in parov ključ-vrednost. JSON pomeni JavaSkripta Object Notacija. Kot navaja polno ime, izhaja iz JavaScript-a. Vendar so podatki JSON podprti v večini priljubljenih programskih jezikov.
Pogosto se uporablja za prenos podatkov s strežnika na spletno stran. Mnogo lažje in čisteje je predstaviti strukturirane podatke v JSON kot XML.
Sintaksno pravilo JSON
Tu so pravila sintakse JSON:
- Podatki JSON morajo biti vedno v obliki parov ključ-vrednost.
- Podatki JSON so ločeni z vejicami.
- Curly oklepaj se uporablja za predstavitev predmeta JSON.
- V oglatem oklepaju je predstavljena matrika JSON.
Kaj so podatki JSON?
Podatki JSON so predstavljeni v obliki parov ključ-vrednost. To je podobno kot slovar ali hash v drugih programskih jezikih.
“Ime”: “Drake”
To je primer preprostih podatkov JSON. Tu je ključ »Ime« in »Drake« je ustrezna vrednost. Ključ, tj.e., »Ime« in vrednost, tj.e., "Drake" ločuje dvopičje.
Razširitev datoteke JSON
Podatki JSON so običajno shranjeni v datoteki s pripono ».json ". Če želite na primer shraniti podatke o zaposlenem, lahko datoteko preprosto poimenujete kot 'zaposleni.json '. To bi bila preprosta besedilna datoteka. Datoteko JSON lahko nato odprete v katerem koli izmed svojih najljubših urejevalnikov besedil.
Predmet JSON
Predmet JSON ni nič drugega kot podatki JSON, zaprti v zavite oklepaje. Tu je vzorec predmeta 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č, tj.e., »Ime« in vrednost, tj.e., "Drake" ločuje dvopičje. V zgornjem primeru obstajajo štirje pari ključ-vrednost. Prva tipka je »Ime«; "Drake" je ustrezna vrednost zanj. Podobno so "EmployeeID", "Phone" in "Department" ostali trije ključi.
JSON matrika
Polje JSON lahko vsebuje več objektov JSON, ločenih z vejico. Matrika JSON je zaprta v oglatem oklepaju. Oglejmo si primer matrike JSON:
"Študenti": ["firstName": "Sean", "lastName": "Brown",
"firstName": "Drake", "lastName": "Williams",
"firstName": "Tom", "lastName": "Miller",
"FirstName": "Peter", "lastName": "Johnson"
]
To je primer matrike JSON. Tu je "Študenti" zaprt z oklepajem, tj.e., matrika in vsebuje štiri predmete JSON. Vsak od teh predmetov je predstavljen v obliki parov ključ-vrednost in je ločen z vejico.
Vzorčna datoteka JSON
Ker smo razumeli podatke JSON, predmete JSON, matriko JSON, si oglejmo primer datoteke JSON:
“FirstName”: “Sean”,
"LastName": "Rjava",
"Študentska izkaznica": 21453,
“Oddelek”: “Računalništvo Sc.",
"Predmeti": ["Matematika", "Phy", "Chem"]
Razčlenitev knjižnic v jeziku C ++:
Za razčlenitev podatkov JSON v C ni izvorne rešitve++. Vendar obstaja več knjižnic za razčlenitev podatkov JSON v jeziku C++. V tem članku bomo preučili dve najbolj priljubljeni knjižnici za razčlenitev podatkov JSON v jeziku C++. Tu so povezave GitHub za razčlenjevanje podatkov JSON:
- https: // github.com / nlohmann / json
- https: // github.com / Tencent / rapidjson /
Morda boste želeli prenesti te knjižnice, da boste lahko izvedli spodnje primere.
Primeri
Zdaj imamo osnovno razumevanje podatkov JSON, predmetov, nizov in razpoložljivih knjižnic za razčlenjevanje. Oglejmo si zdaj nekaj primerov za razčlenitev podatkov JSON v jeziku C ++:
- Primer-1: Razčlenite JSON v C++
- Primer-2: Razčlenite in serializirajte 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 bomo prikazali, kako dostopati do vrednosti podatkov JSON v jeziku C++.
#include#include "json.hpp "
z uporabo json = nlohmann :: json;
int main ()
// jdZaposleni
json jdE Employees =
"firstName", "Sean",
"lastName", "Brown",
"StudentID", 21453,
"Oddelek", "Računalništvo Sc."
;
// Dostop do vrednosti
std :: string fName = jdZaposleni.vrednost ("firstName", "oops");
std :: string lName = jdZaposleni.vrednost ("lastName", "oops");
int sID = jdZaposleni.vrednost ("StudentID", 0);
std :: string dept = jdZaposleni.vrednost ("Oddelek", "ups");
// Natisni vrednosti
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;
vrnitev 0;
Primer-2: Razčlenite in serializirajte JSON v C++
V tem primeru bomo videli, kako razčleniti in serializirati JSON v C++. Za razčlenitev podatkov JSON uporabljamo »json :: parse ()«.
#include#include "json.hpp "
#include
z uporabo json = nlohmann :: json;
int main ()
// Tu je besedilo JSON
besedilo char [] = R "(
"Knjiga":
"Širina": 450,
"Višina": 30,
"Naslov": "Pozdravljeni, svet",
"isBiography": napačno,
"NumOfCopies": 4,
"LibraryIDs": [2319, 1406, 3854, 987]
) ";
// Razčlenimo in serializiramo JSON
json j_complete = json :: parse (besedilo);
std :: cout << std::setw(4) << j_complete << std::endl;
Primer-3: Razčlenite JSON v C++
Zdaj bomo pokazali, kako razčleniti niz JSON s pomočjo knjižnice RapidJSON. RapidJSON je bil prvotno navdihnjen z RapidXML. V tem primeru programa analiziramo niz JSON v DOM. Razglasili smo "mydoc" vrste "Document" in nato uporabili "mydoc.parse () ”za razčlenitev niza JSON.
#include#include "rapidjson / Writer.h "
#include "rapidjson / document.h "
#include "rapidjson / stringbuffer.h "
uporaba imenskega prostora rapidjson;
int main ()
const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
"oddelek": "Računalništvo Sc."";
// Razčlenimo niz JSON v DOM
Dokument mydoc;
mydoc.Razčleni (json);
// DOM v niz
Medpomnilnik StringBuffer;
Pisatelj
mydoc.Sprejmi (pisatelj);
// Natisni izhod
std :: cout << buffer.GetString() << std::endl;
vrnitev 0;
Zaključek
V tem članku smo na kratko obravnavali podatke, objekt, matriko in skladnjo JSON. Kot vemo, v C ++ ni izvorne rešitve za razčlenjevanje podatkov JSON; za razčlenitev 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++. V primerjavi s knjižnico "nlohmann" je RapidJSON majhen, hiter in pomnilniku prijazen.