Mis on JSON?
JSON on kergekaaluline tekstipõhine esitus struktureeritud andmete organiseeritud salvestamiseks ja edastamiseks. JSON-andmed on esitatud järjestatud loendite ja võtmeväärtuste paaridena. JSON tähistab JavaSkäsikiri Oobjekt Notatsioon. Nagu näitab täisnimi, on see tuletatud JavaScripti abil. Kuid JSON-andmeid toetatakse enamikus populaarsetes programmeerimiskeeltes.
Seda kasutatakse sageli andmete edastamiseks serverist veebisaidile. Struktureeritud andmete esitamine JSON-is on palju lihtsam ja puhtam kui XML.
JSON-i süntaksireegel
Siin on JSON-i süntaksireeglid:
- JSON Andmed peaksid alati olema võtme-väärtuse paaridena.
- JSON Andmed eraldatakse komadega.
- JSON-objekti tähistamiseks kasutatakse lokkisulgurit.
- JSON-massiivi tähistamiseks kasutatakse nurksulgusid.
Mis on JSON Data?
JSONi andmed on esitatud võtme-väärtuste paaridena. See sarnaneb teiste programmeerimiskeelte sõnaraamatu või räsiga.
„Nimi”: „Drake”
See on lihtne JSON-andmete näide. Võti on siin „Nimi” ja „Drake” on vastav väärtus. Võti, s.t.e., „Nimi” ja väärtus, s.t.e., “Drake” on eraldatud kooloniga.
JSON-faililaiend
JSON-andmed salvestatakse tavaliselt faili laiendiga “.json ”. Näiteks töötaja andmete salvestamiseks võite faili lihtsalt nimetada töötajaks.json '. See oleks lihtne tekstifail. Seejärel saate selle JSON-faili avada mis tahes oma lemmiktekstiredaktoris.
JSON-objekt
JSON-objekt pole midagi muud kui lokkis sulgudes suletud JSON-i andmed. Siin on JSON-i objekti näidis:
„Nimi”: „Drake”,
„Töötaja ID”: „23547a”,
„Telefon”: „23547”,
„Osakond“: „Rahandus“
JSON-objekt võib sisaldada mitut JSON-andmeid. Kõik JSON-i andmed eraldatakse komaga. JSON-andmeid esitatakse võtme-väärtuste paaridena. Võti, s.t.e., „Nimi” ja väärtus, s.t.e., “Drake” on eraldatud kooloniga. Ülaltoodud näites on neli võtmeväärtuste paari. Esimene võti on “Nimi”; “Drake” on sellele vastav väärtus. Samamoodi on ülejäänud kolm võtit “EmployeeID”, “Phone” ja “Department”.
JSON massiiv
JSON-massiiv võib sisaldada mitut komaga eraldatud JSON-objekti. JSON massiiv on suletud nurksulgudesse. Vaatame JSON-massiivi näidet:
"Õpilased": ["eesnimi": "Sean", "perenimi": "pruun",
"eesnimi": "Drake", "perenimi": "Williams",
"eesnimi": "Tom", "perenimi": "Miller",
“Eesnimi”: “Peeter”, “perenimi”: “Johnson”
]
See on JSON-massiivi näide. Siin on “Tudengid” ümbritsetud nurksulguga, s.t.e., massiiv ja see sisaldab nelja JSON-objekti. Kõiki neid objekte on kujutatud võtmeväärtuste paaridena ja need on eraldatud komaga.
JSON-faili näidis
Kuna me mõistsime JSON-i andmeid, JSON-objekte, JSON-massiivi, vaatame JSON-faili näidet:
„Eesnimi”: „Sean”,
„Perekonnanimi”: „pruun”,
„Õpilase ID”: 21453,
"Osakond": "Arvuti Sc.”,
„Õppeained“: [„matemaatika“, „Phy“, „Chem“]
Raamatukogude analüüsimine C ++ keeles:
JSON-i andmete sõelumiseks C-s pole natiivlahendust++. JSON-i andmete sõelumiseks C-s on aga mitu teeki++. Selles artiklis uurime kahte kõige populaarsemat teeki, et sõeluda JSON-andmeid C-s++. JSON-i andmete analüüsimiseks on siin GitHubi lingid:
- https: // github.com / nlohmann / json
- https: // github.com / Tencent / rapidjson /
Kui soovite allpool toodud näiteid täita, võite need teegid alla laadida.
Näited
Nüüd on meil põhiteadmised JSON-i andmetest, objektidest, massiividest ja saadaolevatest sõelumisraamatukogudest. Vaatame nüüd paari näidet JSON-andmete sõelumiseks C ++ -s:
- Näide 1: JSON-i sõelumine C-s++
- Näide 2: JSON-i sõelumine ja serialiseerimine C-s++
- Näide 3: JSON-i sõelumine C-s++
Näidete 1 ja 2 puhul kasutame nlohmanni teeki. Näite 3 puhul kasutame teeki „RapidJSON”.
Näide 1: JSON-i sõelumine C-s++
Selles näidisprogrammis demonstreerime, kuidas C-s JSON-i andmetele juurde pääseda++.
# kaasata#include "json.hpp "
kasutades json = nlohmann :: json;
int main ()
// jdTöötajad
json jdTöötajad =
"eesnimi", "Sean",
"perekonnanimi", "pruun",
"StudentID", 21453,
"Osakond", "Computer Sc."
;
// Juurdepääs väärtustele
std :: string fName = jdTöötajad.väärtus ("eesnimi", "oih");
std :: string lName = jdTöötajad.väärtus ("perekonnanimi", "oih");
int sID = jdTöötajad.väärtus ("StudentID", 0);
std :: string dept = jdTöötajad.väärtus ("osakond", "oih");
// Prindige väärtused
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;
tagastama 0;
Näide 2: JSON-i sõelumine ja serialiseerimine C-s++
Selles näidisprogrammis näeme, kuidas JSON-i C-s sõeluda ja järjestada++. JSON-i andmete sõelumiseks kasutame teksti “json :: parse ()”.
# kaasata#include "json.hpp "
# kaasata
kasutades json = nlohmann :: json;
int main ()
// Siin on JSON-i tekst
söetekst [] = R "(
"Raamat":
"Laius": 450,
"Kõrgus": 30,
"Pealkiri": "Tere maailm",
"isBiography": vale,
"NumOfCopies": 4,
"LibraryIDs": [2319, 1406, 3854, 987]
) ";
// Analüüsime ja järjestame JSON-i
json j_complete = json :: parse (tekst);
std :: cout << std::setw(4) << j_complete << std::endl;
Näide 3: JSON-i sõelumine C-s++
Nüüd demonstreerime JSON-i stringi sõelumist RapidJSON-i teegi abil. RapidJSON oli algselt inspireeritud RapidXML-ist. Selles näidisprogrammis parsime JSON-i stringi DOM-i. Oleme kuulutanud “mydoc” tüüpi “Document” ja kasutanud seejärel “mydoc.parse () ”meetod JSON-stringi sõelumiseks.
# kaasata#include "rapidjson / kirjanik.h "
#include "rapidjson / dokument.h "
#include "rapidjson / stringbuffer.h "
nimeruumi rapidjson kasutamine;
int main ()
const char * json = "" eesnimi ":" Sean "," perekonnanimi ":" pruun "," empId ": 21453,
"osakond": "Computer Sc."";
// Sõeluge JSON-string DOM-i
Dokumendi mydoc;
mydoc.Parsimine (json);
// DOM stringiks
StringBufferi puhver;
Kirjanik
mydoc.Nõus (kirjanik);
// Prindi väljund
std :: cout << buffer.GetString() << std::endl;
tagastama 0;
Järeldus
Selles artiklis oleme lühidalt arutanud JSON-i andmeid, objekti, massiivi ja süntaksit. Nagu me teame, pole JSON-i andmete parsimiseks C ++ keeles natiivlahendust; oleme C-s JSON-andmete sõelumiseks kasutanud kahte erinevat teeki++. Uurisime kolme erinevat näidet, et näidata JSON-i andmete parsimise mehhanismi C-s++. Võrreldes „nlohmanni” raamatukoguga on RapidJSON väike, kiire ja mälusõbralik.