C ++

Kako razčleniti JSON v C ++

Kako razčleniti JSON v C ++
Namen te vadnice je razumeti podatke JSON in kako razčleniti podatke JSON v C++. Razpravljali bomo o sintaksi podatkov JSON, Object, Array, JSON in si nato ogledali več delovnih primerov, da bi razumeli mehanizem razčlenjevanja podatkov JSON v C++.

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:

  1. Podatki JSON morajo biti vedno v obliki parov ključ-vrednost.
  2. Podatki JSON so ločeni z vejicami.
  3. Curly oklepaj se uporablja za predstavitev predmeta JSON.
  4. 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:

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

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 zapisovalnik (medpomnilnik);
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.

Levi gumb miške ne deluje v sistemu Windows 10
Če s prenosnikom ali namiznim računalnikom uporabljate namensko miško, vendar gumb miške z levim klikom ne deluje v operacijskem sistemu Windows 10/8/...
Kazalec skoči ali se naključno premika med tipkanjem v sistemu Windows 10
Če ugotovite, da kazalec miške med tipkanjem v prenosnem računalniku ali računalniku Windows samodejno, naključno preskakuje ali se premika sam, vam l...
Kako obrniti smer drsenja miške in sledilne ploščice v sistemu Windows 10
Miška in Sledilna ploščicaRačunalništvo ni samo enostavno, ampak bolj učinkovito in manj zamudno. Življenja brez teh naprav si ne moremo predstavljati...