Kuinka jäsentää JSON C ++: ssa

How Parse Json C



Tämän opetusohjelman tarkoituksena on ymmärtää JSON -tiedot ja kuinka jäsentää JSON -tiedot C ++: ssa. Keskustelemme JSON -tiedoista, objekteista, matriiseista, JSON -syntaksista ja käymme sitten läpi useita työskentelyesimerkkejä ymmärtääksemme JSON -tietojen jäsentämismekanismin C ++: ssa.

Mikä on JSON?

JSON on kevyt tekstipohjainen esitys strukturoidun datan säilyttämiseksi ja siirtämiseksi organisoidulla tavalla. JSON-tiedot esitetään järjestettyjen luetteloiden ja avain-arvoparien muodossa. JSON tarkoittaa J ava S cript TAI bject N huomautus. Kuten koko nimi osoittaa, se on johdettu JavaScriptistä. JSON -dataa tuetaan kuitenkin useimmilla suosituilla ohjelmointikielillä.







Sitä käytetään usein tietojen siirtämiseen palvelimelta verkkosivulle. On paljon helpompaa ja puhtaampaa esittää jäsennettyä dataa JSONissa kuin XML: ää.



JSON -syntaksisääntö

Tässä ovat JSON -syntaksisäännöt:



  1. JSON-tietojen tulee aina olla avain-arvo-pareja.
  2. JSON Data erotetaan pilkuilla.
  3. JSON -objektia edustaa kihara ahdin.
  4. Hakasulkeella edustetaan JSON -taulukkoa.

Mikä on JSON Data?

JSON-tiedot esitetään avain-arvo-pareina. Tämä on samanlainen kuin sanakirja tai tiiviste muilla ohjelmointikielillä.





Nimi: Drake

Tämä on esimerkki yksinkertaisista JSON -tiedoista. Avain tässä on Nimi ja Drake on vastaava arvo. Avain eli Nimi ja arvo eli Drake erotetaan kaksoispisteellä.



JSON -tiedostopääte

JSON -tiedot tallennetaan tavallisesti tiedostoon .json -tunnisteella. Jos haluat esimerkiksi tallentaa työntekijän tiedot, voit nimetä tiedoston 'työntekijä.json'. Tämä olisi yksinkertainen tekstitiedosto. Voit sitten avata tämän JSON -tiedoston missä tahansa suosikkitekstieditoristasi.

JSON -objekti

JSON -objekti on vain JSON -data, joka on suljettu aaltosulkeisiin. Tässä on esimerkki JSON -objektista:

{
Nimi:Drake,
henkilöstökortti:23547a,
Puhelin: 23547,
Osasto:Rahoittaa
}

JSON -objekti voi sisältää useita JSON -tietoja. Jokainen JSON -data erotetaan pilkulla. JSON-tiedot esitetään avain-arvo-pareina. Avain eli Nimi ja arvo eli Drake erotetaan kaksoispisteellä. Yllä olevassa esimerkissä on neljä avain-arvo-paria. Ensimmäinen avain on Nimi; Drake on sitä vastaava arvo. Samoin EmployeeID, Puhelin ja osasto ovat kolme muuta avainta.

JSON Array

JSON-taulukko voi sisältää useita pilkuilla erotettuja JSON-objekteja. JSON -taulukko on hakasulkeessa. Katsotaanpa esimerkkiä JSON -taulukosta:

'Opiskelijat':[
{'etunimi':'Sean', 'sukunimi':'Ruskea'},
{'etunimi':'Drake', 'sukunimi':'Williams'},
{'etunimi':'Tom', 'sukunimi':'Miller'},
{etunimi:Peter,sukunimi:Johnson}
]

Tämä on esimerkki JSON -taulukosta. Tässä opiskelijat on suljettu hakasulkeella eli matriisilla, ja se sisältää neljä JSON -objektia. Jokainen näistä objekteista on esitetty avain-arvo-pareina ja erotettu toisistaan ​​pilkulla.

Esimerkki JSON -tiedostosta

Nyt kun ymmärsimme JSON -tiedot, JSON -objektit, JSON -taulukon, katsotaan esimerkkiä JSON -tiedostosta:

{
etunimi:Sean,
sukunimi:Ruskea,
opiskelijanumero: 21453,
Osasto:Tietokone Sc.,
Aiheet:[Matematiikka,Phy,Chem]
}

Kirjastojen jäsentäminen C ++: ssa:

Ei ole natiiviratkaisua JSON -datan jäsentämiseen C ++: ssa. On kuitenkin useita kirjastoja JSON -datan jäsentämiseen C ++: ssa. Tässä artikkelissa tarkastelemme kahta suosituinta kirjastoa JSON -datan jäsentämiseksi C ++: ssa. Tässä on GitHub -linkit JSON -tietojen jäsentämiseen:

  1. https://github.com/nlohmann/json
  2. https://github.com/Tencent/rapidjson/

Voit halutessasi ladata nämä kirjastot voidaksesi suorittaa alla olevat esimerkit.

Esimerkkejä

Nyt meillä on perustiedot JSON -tiedoista, objekteista, matriiseista ja käytettävissä olevista jäsennyskirjastoista. Katsotaanpa nyt muutamaa esimerkkiä JSON -datan jäsentämiseksi C ++: ssa:

  • Esimerkki 1: jäsennä JSON C ++: ssa
  • Esimerkki 2: Jäsennä ja sarjasta JSON C ++: ssa
  • Esimerkki 3: jäsennä JSON C ++: ssa

Esimerkissä 1 ja esimerkissä 2 aiomme käyttää nlohmann-kirjastoa. Esimerkissä 3 käytämme RapidJSON-kirjastoa.

Esimerkki 1: jäsennä JSON C ++: ssa

Tässä esimerkkiohjelmassa osoitamme, miten pääset käsiksi JSON -tietojen arvoihin C ++: ssa.

#sisältää
#include 'json.hpp'

käyttäen json=nlohmann::json;

inttärkein()
{

// jdTyöntekijät
json jdTyöntekijät=
{
{'etunimi','Sean'},
{'sukunimi','Ruskea'},
{'Opiskelijanumero',21453},
{'Osasto','Tietokone Sc.'}
};

// Pääsy arvoihin
tuntia::merkkijonofNimi=jdTyöntekijät.arvo('etunimi', 'Oho');
tuntia::merkkijonolNimi=jdTyöntekijät.arvo('sukunimi', 'Oho');
intsID=jdTyöntekijät.arvo('Opiskelijanumero', 0);
tuntia::merkkijonoosasto=jdTyöntekijät.arvo('Osasto', 'Oho');

// Tulosta arvot
tuntia::kustannus << 'Etunimi: ' <<fNimi<<tuntia::endl;
tuntia::kustannus << 'Sukunimi: ' <<lNimi<<tuntia::endl;
tuntia::kustannus << 'Opiskelijanumero: ' <<sID<<tuntia::endl;
tuntia::kustannus << 'Osasto:' <<osasto<<tuntia::endl;

palata 0;
}

Esimerkki 2: Jäsennä ja sarjasta JSON C ++: ssa

Tässä esimerkkiohjelmassa aiomme nähdä, kuinka jäsentää ja sarjoittaa JSON C ++: ssa. Käytämme json :: parse () jäsentämään JSON -tietoja.

#sisältää
#include 'json.hpp'
#sisältää

käyttäen json=nlohmann::json;

inttärkein()
{
// Tässä on JSON -teksti
hiiltyäteksti[] =R'((
{
''
Kirja': {
''
Leveys': 450,
''
Korkeus': 30,
''
Otsikko':'Hei maailma',
''
on elämäkerta': väärä,
''
NumOfCopies': 4,
''
KirjastoID': [2319, 1406, 3854, 987]
}
}
) ''
;

// jäsennellään ja sarjataan JSON
json j_complete=json::jäsentää(teksti);
tuntia::kustannus <<tuntia::setw(4) <<j_complete<<tuntia::endl;
}

Esimerkki 3: jäsennä JSON C ++: ssa

Nyt esittelemme kuinka jäsentää JSON -merkkijono RapidJSON -kirjaston avulla. RapidJSON on alun perin saanut inspiraationsa RapidXML: stä. Tässä esimerkkiohjelmassa jäsennämme JSON -merkkijonon DOM -muotoon. Olemme ilmoittaneet asiakirjan tyypin mydoc ja jäsentäneet sitten JSON -merkkijonon käyttämällä mydoc.parse () -menetelmää.

#sisältää
#include 'rapidjson/written.h'
#include 'rapidjson/document.h'
#include 'rapidjson/stringbuffer.h'

käyttämällä nimitilaa rapidjson;

inttärkein()
{

const hiiltyä*json= '{'etunimi':'Sean','sukunimi':'Ruskea','empId': 21453,
''
osasto':'Tietokone Sc.'}';

// jäsentää JSON -merkkijono DOM: ksi
Dokumentoi mydoc;
mydoc.Jäsentää(json);

// DOM merkkijonoksi
StringBuffer -puskuri;
Kirjailija<StringBuffer>kirjailija(puskuri);

mydoc.Hyväksyä(kirjailija);

// Tulosta tulostus
tuntia::kustannus <<puskuri.GetString() <<tuntia::endl;

palata 0;
}

Johtopäätös

Tässä artikkelissa olemme keskustelleet lyhyesti JSON data, objekti, matriisi ja syntaksi. Kuten tiedämme, C ++: ssa ei ole natiiviratkaisua JSON -tietojen jäsentämiseen; olemme käyttäneet kahta eri kirjastoa JSON -datan jäsentämiseen C ++: ssa. Tutkimme kolmea eri esimerkkiä osoittaaksemme JSON -tietojen jäsennysmekanismin C ++: ssa. Verrattuna nlohmann-kirjastoon RapidJSON on pieni, nopea ja muistiystävällinen.