Kas ir JSON?
JSON ir viegls teksta attēlojums strukturētu datu glabāšanai un pārsūtīšanai organizētā veidā. JSON dati tiek attēloti sakārtotu sarakstu un atslēgu un vērtību pāru veidā. JSON apzīmē DžavaSscenārijs Oobjekts Notācija. Kā norāda pilns nosaukums, tas ir iegūts no JavaScript. Tomēr JSON dati tiek atbalstīti lielākajā daļā populāro programmēšanas valodu.
To bieži izmanto, lai pārsūtītu datus no servera uz tīmekļa lapu. Strukturētos datus attēlot JSON ir daudz vieglāk un tīrāk nekā XML.
JSON sintakses kārtula
Šeit ir JSON sintakses kārtulas:
- JSON datiem vienmēr jābūt atslēgu un vērtību pāru formā.
- JSON dati tiek atdalīti ar komatiem.
- Cirtainā lencīte tiek izmantota, lai attēlotu JSON objektu.
- Kvadrātiekava tiek izmantota, lai attēlotu JSON masīvu.
Kas ir JSON dati?
JSON dati tiek attēloti atslēgu un vērtību pāru veidā. Tas ir līdzīgs vārdnīcai vai hash citās programmēšanas valodās.
“Vārds”: “Drake”
Šis ir vienkāršu JSON datu piemērs. Šeit galvenais ir “Nosaukums” un “Drake” ir atbilstošā vērtība. Atslēga, t.i.e., “Nosaukums” un vērtība, t.e., “Drake” atdala kols.
JSON faila paplašinājums
JSON dati parasti tiek glabāti failā ar paplašinājumu “.json ”. Piemēram, lai saglabātu darbinieka datus, varat vienkārši nosaukt failu kā “darbinieks.Json '. Tas būtu vienkāršs teksta fails. Pēc tam šo JSON failu varat atvērt jebkurā no iecienītākajiem teksta redaktoriem.
JSON objekts
JSON objekts ir nekas cits kā JSON dati, kas iekļauti cirtainajās iekavās. Šeit ir JSON objekta paraugs:
“Vārds”: “Drake”,
“Darbinieka ID”: “23547a”,
“Tālrunis”: “23547”,
“Departaments”: “Finanses”
JSON objektā var būt vairāki JSON dati. Katru JSON datus atdala komats. JSON dati tiek attēloti kā atslēgu un vērtību pāri. Atslēga, t.i.e., “Nosaukums” un vērtība, t.e., “Drake” atdala kols. Iepriekš minētajā piemērā ir četri atslēgu un vērtību pāri. Pirmais taustiņš ir “Nosaukums”; “Drake” ir atbilstošā tā vērtība. Līdzīgi “EmployeeID”, “Phone” un “Department” ir pārējie trīs taustiņi.
JSON masīvs
JSON masīvā var būt vairāki komatiem atdalīti JSON objekti. JSON masīvs ir ievietots kvadrātiekavās. Apskatīsim JSON masīva piemēru:
"Studenti": ["firstName": "Sean", "lastName": "Brown",
"firstName": "Drake", "lastName": "Williams",
"firstName": "Tom", "lastName": "Miller",
“FirstName”: “Peter”, “lastName”: “Johnson”
]
Šis ir JSON masīva piemērs. Šeit “Studenti” ir pievienoti kvadrātiekavai, t.e., masīvs, un tajā ir četri JSON objekti. Katrs no šiem objektiem ir attēlots atslēgu un vērtību pāru veidā un ir atdalīts ar komatu.
JSON faila paraugs
Tā kā mēs sapratām JSON datus, JSON objektus, JSON masīvu, apskatīsim JSON faila piemēru:
“FirstName”: “Šons”,
“LastName”: “Brūns”,
“Student ID”: 21453,
“Departaments”: “Datorzinātne.”,
“Priekšmeti”: [“Matemātika”, “Phy”, “Chem”]
Parsējot bibliotēkas C ++:
Nav dzimtā risinājuma JSON datu parsēšanai C++. Tomēr JSON datu parsēšanai C ir vairākas bibliotēkas++. Šajā rakstā mēs izpētīsim divas populārākās bibliotēkas, lai parsētu JSON datus C++. Šeit ir GitHub saites JSON datu parsēšanai:
- https: // github.com / nlohmann / json
- https: // github.com / Tencent / rapidjson /
Varat lejupielādēt šīs bibliotēkas, lai varētu izpildīt tālāk parādītos piemērus.
Piemēri
Tagad mums ir pamata izpratne par JSON datiem, objektiem, masīviem un pieejamajām parsēšanas bibliotēkām. Apskatīsim pāris piemērus, lai parsētu JSON datus C ++:
- 1. piemērs: JSON parsēšana C++
- 2. piemērs: JSON parsēšana un serializēšana C++
- 3. piemērs: JSON parsēšana C++
1. un 2. piemērā mēs izmantosim bibliotēku “nlohmann”. 3. piemērā mēs izmantosim bibliotēku “RapidJSON”.
1. piemērs: JSON parsēšana C++
Šajā programmas piemērā mēs parādīsim, kā piekļūt JSON datu vērtībām C++.
# iekļaut#include "json.hpp "
izmantojot json = nlohmann :: json;
int main ()
// jdDarbinieki
json jdDarbinieki =
"firstName", "Sean",
"uzvārds", "brūns",
"StudentID", 21453,
"Departaments", "Computer Sc."
;
// Piekļūstiet vērtībām
std :: string fName = jdDarbinieki.vērtība ("firstName", "ups");
std :: string lName = jdDarbinieki.vērtība ("uzvārds", "ups");
int sID = jdDarbinieki.vērtība ("StudentID", 0);
std :: string dept = jdDarbinieki.vērtība ("departaments", "ups");
// Izdrukājiet vērtības
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;
atgriešanās 0;
2. piemērs: JSON parsēšana un serializēšana C++
Šajā programmas piemērā mēs redzēsim, kā parsēt un serializēt JSON C++. JSON datu parsēšanai mēs izmantojam “json :: parse ()”.
# iekļaut#include "json.hpp "
# iekļaut
izmantojot json = nlohmann :: json;
int main ()
// Šeit ir JSON teksts
char text [] = R "(
"Grāmata":
"Platums": 450,
"Augstums": 30,
"Nosaukums": "Sveika pasaule",
"isBiography": nepatiesa,
"NumOfCopies": 4,
"LibraryIDs": [2319, 1406, 3854, 987]
) ";
// Parsēsim un serializēsim JSON
json j_complete = json :: parse (teksts);
std :: cout << std::setw(4) << j_complete << std::endl;
3. piemērs: JSON parsēšana C++
Tagad mēs parādīsim, kā parsēt JSON virkni, izmantojot RapidJSON bibliotēku. RapidJSON sākotnēji iedvesmoja RapidXML. Šajā programmas piemērā mēs parsējam JSON virkni DOM. Mēs esam deklarējuši “mydoc” veidu “Document” un pēc tam izmantojuši “mydoc.parse () ”metode, lai parsētu JSON virkni.
# iekļaut#include "quickjson / rakstnieks.h "
#include "rapidjson / dokuments.h "
#include "rapidjson / stringbuffer.h "
izmantojot vārdamvietu rapidjson;
int main ()
const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
"departaments": "Computer Sc."";
// Parsējiet JSON virkni DOM
Dokumentu mydoc;
mydoc.Parsēt (json);
// DOM uz virkni
StringBuffer buferis;
rakstnieks
mydoc.Pieņemt (rakstnieks);
// Izdrukājiet izvadi
std :: cout << buffer.GetString() << std::endl;
atgriešanās 0;
Secinājums
Šajā rakstā mēs īsi apspriedām JSON datus, objektu, masīvu un sintaksi. Kā mēs zinām, nav dzimtā risinājuma JSON datu parsēšanai C ++; mēs esam izmantojuši divas dažādas bibliotēkas, lai parsētu JSON datus C++. Mēs parādījām trīs dažādus piemērus, lai parādītu JSON datu parsēšanas mehānismu C++. Salīdzinot ar “nlohmann” bibliotēku, RapidJSON ir mazs, ātrs un draudzīgs atmiņai.