Mis on JSON?
JSON on kergekaaluline tekstipõhine esitus struktureeritud andmete organiseeritud salvestamiseks ja edastamiseks. JSON-i andmed on esitatud tellitud loendite ja võtme-väärtuste paaride kujul. JSON tähistab J ava S kripeldama VÕI bject N märkus. Nagu täisnimi näitab, on see tuletatud JavaScriptist. JSON -i andmeid toetatakse aga enamikus populaarsetes programmeerimiskeeltes.
Seda kasutatakse sageli andmete edastamiseks serverist veebilehele. Struktureeritud andmete esitamine JSONis on palju lihtsam ja puhtam kui XML.
JSONi süntaksi reegel
Siin on JSON -i süntaksireeglid:
- JSONi andmed peaksid alati olema võtme-väärtuse paaride kujul.
- JSON Andmed eraldatakse komadega.
- Lokkis breketit kasutatakse JSON -objekti tähistamiseks.
- JSON -massiivi tähistamiseks kasutatakse nurksulge.
Mis on JSONi andmed?
JSON-i andmed on esitatud võtme-väärtuse paaride kujul. See sarnaneb teiste programmeerimiskeelte sõnastiku või räsiga.
Nimi: Drake
See on näide lihtsatest JSON -andmetest. Võti on siin nimi ja Drake on vastav väärtus. Võti, st nimi ja väärtus, st Drake, eraldatakse kooloniga.
JSON -faililaiend
Tavaliselt salvestatakse JSON -andmed faili laiendiga .json. Näiteks töötaja andmete salvestamiseks võite faili lihtsalt nimetada „töötaja.json”. See oleks lihtne tekstifail. Seejärel saate selle JSON -faili avada mis tahes oma lemmiktekstiredaktoris.
JSON -objekt
JSON -objekt ei ole midagi muud kui lokkisulgudes olevad JSON -andmed. Siin on JSON -i näidisobjekt:
{Nimi:Drake,
töötaja ID:23547a,
Telefon: 23547,
Osakond:Rahandus
}
JSON -objekt võib sisaldada mitmeid JSON -andmeid. Kõik JSON -andmed eraldatakse komaga. JSON-i andmed on esitatud võtme-väärtuse paaridena. Võti, st nimi ja väärtus, st Drake, eraldatakse kooloniga. Ülaltoodud näites on neli võtme-väärtuse paari. Esimene võti on Nimi; Drake on selle jaoks vastav väärtus. Samamoodi on EmployeeID, telefon ja osakond ülejäänud kolm võtit.
JSON Array
JSON-massiiv võib sisaldada mitmeid komadega eraldatud JSON-objekte. JSON -massiiv on suletud nurksulgudes. Vaatame JSON -massiivi näidet:
'Õpilased':[{'eesnimi':'Sean', 'perekonnanimi':'Pruun'},
{'eesnimi':'Drake', 'perekonnanimi':'Williams'},
{'eesnimi':'Tom', 'perekonnanimi':'Miller'},
{eesnimi:Peeter,perekonnanimi:Johnson}
]
See on näide JSON -massiivist. Siin on õpilased suletud nurksulgudega, st massiiviga ja see sisaldab nelja JSON -i objekti. Kõik need objektid on esitatud võtme-väärtuse paaride kujul ja eraldatud komaga.
JSON -faili näidis
Nüüd, kui mõistsime JSON -i andmeid, JSON -objekte, JSON -massiivi, vaatame JSON -faili näidet:
{eesnimi:Sean,
perekonnanimi:Pruun,
Õpilase ID: 21453,
Osakond:Arvuti Sc.,
Teemad:[Matemaatika,Phy,Chem]
}
Raamatukogude sõelumine C ++ keeles:
JSON -i andmete parsimisel C ++ pole natiivset lahendust. JSON -i andmete sõelumiseks C ++ on aga mitu raamatukogu. Selles artiklis uurime kahte kõige populaarsemat raamatukogu, et analüüsida JSON -i andmeid C ++ -is. Siin on GitHubi lingid JSON -i andmete analüüsimiseks:
Allpool toodud näidete täitmiseks võiksite need teegid alla laadida.
Näited
Nüüd on meil põhiteadmised JSONi andmetest, objektidest, massiividest ja saadaolevatest sõelumisteekidest. Vaatame nüüd paari näidet JSON -i andmete analüüsimiseks C ++ -is:
- Näide-1: sõeluge JSON C ++ keeles
- Näide-2: parsige ja järjestage JSON C ++ keeles
- Näide-3: JSON-i sõelumine C ++ -is
Näite 1 ja näite 2 puhul kasutame nlohmanni raamatukogu. Näite-3 puhul kasutame teeki RapidJSON.
Näide-1: sõeluge JSON C ++ keeles
Selles näidisprogrammis demonstreerime, kuidas pääseda juurde C ++ JSON -andmete väärtustele.
#kaasake#include 'json.hpp'
kasutades json=nlohmann::json;
intpeamine()
{
// jdTöötajad
json jdTöötajad=
{
{'eesnimi','Sean'},
{'perekonnanimi','Pruun'},
{'Õpilase ID',21453},
{'Osakond','Arvuti Sc.'}
};
// Juurdepääs väärtustele
tundi::stringfNimi=jdTöötajad.väärtus('eesnimi', 'oih');
tundi::stringlNimi=jdTöötajad.väärtus('perekonnanimi', 'oih');
intsID=jdTöötajad.väärtus('Õpilase ID', 0);
tundi::stringosakond=jdTöötajad.väärtus('Osakond', 'oih');
// Printige väärtused
tundi::maksma << 'Eesnimi: ' <<fNimi<<tundi::endl;
tundi::maksma << 'Perekonnanimi: ' <<lNimi<<tundi::endl;
tundi::maksma << 'Õpilase ID: ' <<sID<<tundi::endl;
tundi::maksma << 'Osakond:' <<osakond<<tundi::endl;
tagasi 0;
}
Näide-2: parsige ja järjestage JSON C ++ keeles
Selles näiteprogrammis vaatame, kuidas JSON -i sõeluda ja seeriaviisiliselt C ++ -is. Kasutame JSON -i andmete sõelumiseks json :: parse ().
#kaasake#include 'json.hpp'
#kaasake
kasutades json=nlohmann::json;
intpeamine()
{
// Siin on JSON -i tekst
süsiteksti[] =R'(
{
'Raamat': {
'Laius': 450,
'Kõrgus': 30,
'Pealkiri':'Tere, Maailm',
'isBiograafia': vale,
'NumOfCopies': 4,
'Raamatukogu ID -d': [2319, 1406, 3854, 987]
}
}
) ';
// Analüüsime ja serialiseerime JSONi
json j_complete=json::sõeluda(teksti);
tundi::maksma <<tundi::setw(4) <<j_valmis<<tundi::endl;
}
Näide-3: JSON-i sõelumine C ++ -is
Nüüd demonstreerime, kuidas parsida JSON -stringi RapidJSON -i teegi abil. RapidJSON oli algselt inspireeritud RapidXML -ist. Selles näiteprogrammis parsime JSON -stringi DOM -i. Oleme deklareerinud dokumendi tüüpi mydoc ja seejärel kasutanud JSON -stringi sõelumiseks meetodit mydoc.parse ().
#kaasake#include 'rapidjson/kirjanik.h'
#include 'rapidjson/document.h'
#include 'rapidjson/stringbuffer.h'
kasutades nimeruumi rapidjson;
intpeamine()
{
const süsi*json= '{'eesnimi':'Sean','perekonnanimi':'Pruun','empId': 21453,
'osakond':'Arvuti Sc.'}';
// Parsige JSON -string DOM -i
Dokumendi mydoc;
mydoc.Sõeluda(json);
// DOM stringiks
StringBuffer puhver;
Kirjanik<StringBuffer>kirjanik(puhver);
mydoc.Nõustu(kirjanik);
// Väljundi printimine
tundi::maksma <<puhver.GetString() <<tundi::endl;
tagasi 0;
}
Järeldus
Selles artiklis oleme lühidalt arutanud JSON andmed, objekt, massiiv ja süntaks. Nagu me teame, pole C ++ -is JSON -i andmete parsimiseks natiivset lahendust; oleme kasutanud kahte erinevat raamatukogu JSON -i andmete parsimiseks C ++ -is. Uurisime kolme erinevat näidet, et näidata JSON -i andmete parsimismehhanismi C ++ -is. Võrreldes nlohmanni raamatukoguga on RapidJSON väike, kiire ja mälusõbralik.