Kaip išanalizuoti JSON naudojant C ++

How Parse Json C



Šios pamokos tikslas yra suprasti JSON duomenis ir kaip išanalizuoti JSON duomenis C ++. Mes aptarsime JSON duomenis, objektą, masyvą, JSON sintaksę, o tada peržiūrėsime kelis darbo pavyzdžius, kad suprastume JSON duomenų analizės mechanizmą C ++.

Kas yra JSON?

JSONAS yra lengvas tekstinis atvaizdas, skirtas organizuotam duomenų saugojimui ir perdavimui. JSON duomenys pateikiami užsakytų sąrašų ir raktinių verčių porų pavidalu. JSON reiškia J ava S kripta ARBA bject N otavimas. Kaip rodo visas pavadinimas, jis kilęs iš „JavaScript“. Tačiau JSON duomenys palaikomi daugelyje populiarių programavimo kalbų.







Jis dažnai naudojamas duomenims iš serverio perkelti į tinklalapį. Daug lengviau ir švariau atvaizduoti struktūrinius duomenis JSON nei XML.



JSON sintaksės taisyklė

Štai JSON sintaksės taisyklės:



  1. JSON duomenys visada turėtų būti raktinių verčių porų pavidalu.
  2. JSON duomenys yra atskirti kableliais.
  3. Garbanotieji breketai naudojami JSON objektui atvaizduoti.
  4. Kvadratinis skliaustas naudojamas JSON masyvui pavaizduoti.

Kas yra JSON duomenys?

JSON duomenys pateikiami raktinių verčių porų pavidalu. Tai panašu į žodyną ar maišą kitomis programavimo kalbomis.





Vardas: Drake

Tai paprastų JSON duomenų pavyzdys. Čia raktas yra Vardas, o Drake yra atitinkama vertė. Raktas, t. Y. Vardas ir reikšmė, t. Y. Drake, yra atskirti dvitaškiu.



JSON failo plėtinys

JSON duomenys paprastai saugomi faile su plėtiniu .json. Pavyzdžiui, norėdami išsaugoti darbuotojo duomenis, galite tiesiog pavadinti failą „darbuotojas.json“. Tai būtų paprastas tekstinis failas. Tada galite atidaryti šį JSON failą bet kuriame mėgstamiausiame teksto redaktoriuje.

JSON objektas

JSON objektas yra ne kas kita, kaip JSON duomenys, esantys garbanotuose skliausteliuose. Štai JSON objekto pavyzdys:

{
vardas:Drake,
Darbuotojo ID:23547a,
Telefonas: 23547,
Departamentas:Finansai
}

JSON objekte gali būti keli JSON duomenys. Visi JSON duomenys yra atskirti kableliu. JSON duomenys pateikiami kaip raktinių verčių poros. Raktas, t. Y. Vardas ir reikšmė, t. Y. Drake, yra atskirti dvitaškiu. Pirmiau pateiktame pavyzdyje yra keturios raktinių verčių poros. Pirmasis raktas yra vardas; Drake yra atitinkama jo vertė. Panašiai „EmployeeID“, „Phone“ ir „Department“ yra kiti trys raktai.

JSON masyvas

JSON masyve gali būti keli kableliais atskirti JSON objektai. JSON masyvas yra įtrauktas į kvadratinį skliaustą. Pažvelkime į JSON masyvo pavyzdį:

„Studentai“:[
{'Pirmas vardas':„Šonas“, 'pavardė':„Ruda“},
{'Pirmas vardas':'Drake', 'pavardė':„Williams“},
{'Pirmas vardas':'Tomas', 'pavardė':„Milleris“},
{Pirmas vardas:Petras,pavardė:Johnsonas}
]

Tai yra JSON masyvo pavyzdys. Čia studentai yra uždėti laužtiniu skliaustu, ty masyvu, jame yra keturi JSON objektai. Kiekvienas iš šių objektų pavaizduotas raktų ir verčių porų pavidalu ir yra atskirtas kableliu.

Pavyzdinis JSON failas

Dabar, kai supratome JSON duomenis, JSON objektus, JSON masyvą, pažvelkime į JSON failo pavyzdį:

{
Pirmas vardas:Šonas,
pavardė:Ruda,
Studento pažymėjimas: 21453,
Departamentas:Kompiuteris Sc.,
Dalykai:[Matematika,Phy,Chem]
}

Bibliotekų analizavimas naudojant C ++:

Nėra vietinio sprendimo, skirto analizuoti JSON duomenis C ++. Tačiau yra keletas bibliotekų, kurios analizuoja JSON duomenis C ++. Šiame straipsnyje apžvelgsime dvi populiariausias bibliotekas, skirtas analizuoti JSON duomenis C ++. Čia yra „GitHub“ nuorodos JSON duomenims analizuoti:

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

Galbūt norėsite atsisiųsti šias bibliotekas, kad galėtumėte vykdyti toliau pateiktus pavyzdžius.

Pavyzdžiai

Dabar mes turime pagrindinį supratimą apie JSON duomenis, objektus, masyvus ir galimas analizavimo bibliotekas. Dabar pažvelkime į keletą pavyzdžių, kaip analizuoti JSON duomenis C ++:

  • 1 pavyzdys: išanalizuokite JSON C ++
  • 2 pavyzdys: išanalizuokite ir suskirstykite JSON į C ++
  • 3 pavyzdys: išanalizuokite JSON C ++

1 ir 2 pavyzdžių atveju naudosime „nlohmann“ biblioteką. 3 pavyzdžio atveju naudosime „RapidJSON“ biblioteką.

1 pavyzdys: išanalizuokite JSON C ++

Šioje pavyzdinėje programoje parodysime, kaip pasiekti C ++ JSON duomenų reikšmes.

#įtraukti
#include 'json.hpp'

naudojant json=nlohmann::json;

tarptpagrindinis()
{

// jdDarbuotojai
json jdDarbuotojai=
{
{'Pirmas vardas',„Šonas“},
{'pavardė',„Ruda“},
{'Studento pažymėjimas',21453},
{„Departamentas“,'Kompiuteris Sc.'}
};

// Pasiekite reikšmes
valandų::eilutėfPavadinimas=jdDarbuotojai.vertės('Pirmas vardas', 'oi');
valandų::eilutėlPavadinimas=jdDarbuotojai.vertės('pavardė', 'oi');
tarptsID=jdDarbuotojai.vertės('Studento pažymėjimas', 0);
valandų::eilutėkatedra=jdDarbuotojai.vertės(„Departamentas“, 'oi');

// Spausdinti reikšmes
valandų::kaina << 'Pirmas vardas: ' <<fPavadinimas<<valandų::endl;
valandų::kaina << 'Pavardė: ' <<lPavadinimas<<valandų::endl;
valandų::kaina << 'Studento pažymėjimas: ' <<sID<<valandų::endl;
valandų::kaina << „Skyrius“: <<katedra<<valandų::endl;

grįžti 0;
}

2 pavyzdys: išanalizuokite ir suskirstykite JSON į C ++

Šioje programos pavyzdyje mes pamatysime, kaip išanalizuoti ir serijizuoti JSON naudojant C ++. Mes naudojame json :: parse (), kad išanalizuotume JSON duomenis.

#įtraukti
#include 'json.hpp'
#įtraukti

naudojant json=nlohmann::json;

tarptpagrindinis()
{
// Čia yra JSON tekstas
anglistekstas[] =R'(
{
'
Knyga': {
'
Plotis„: 450,
'
Aukštis': 30,
'
Pavadinimas':'Labas pasauli“,
'
isBiografija': klaidinga,
'
„NumOfCopies““: 4,
'
Bibliotekos ID„: [2319, 1406, 3854, 987]
}
}
) '
;

// Analizuokime ir serijizuokime JSON
json j_complete=json::išanalizuoti(tekstas);
valandų::kaina <<valandų::sustingti(4) <<j_baigtas<<valandų::endl;
}

3 pavyzdys: išanalizuokite JSON C ++

Dabar parodysime, kaip išanalizuoti JSON eilutę naudojant „RapidJSON“ biblioteką. „RapidJSON“ iš pradžių įkvėpė „RapidXML“. Šioje programos pavyzdyje mes analizuojame JSON eilutę į DOM. Deklaravome dokumento tipo „mydoc“ ir tada, naudodami „mydoc.parse“ () metodą, norėdami išanalizuoti JSON eilutę.

#įtraukti
#include 'rapidjson/liter.h'
#include 'rapidjson/document.h'
#include 'rapidjson/stringbuffer.h'

naudojant vardų sritį rapidjson;

tarptpagrindinis()
{

konst anglis*json= „{“Pirmas vardas':'Šonas','pavardė':'Ruda','empId„: 21453,
'
skyrius':'Kompiuteris Sc.'}';

// Analizuokite JSON eilutę į DOM
Dokumentas mydoc;
mydoc.Analizuoti(json);

// DOM į eilutę
StringBuffer buferis;
Rašytojas<StringBuffer>rašytojas(buferis);

mydoc.Priimti(rašytojas);

// Spausdinti išvestį
valandų::kaina <<buferis.„GetString“() <<valandų::endl;

grįžti 0;
}

Išvada

Šiame straipsnyje mes trumpai aptarėme JSONAS duomenys, objektas, masyvas ir sintaksė. Kaip žinome, nėra jokio natūralaus JSON duomenų analizės sprendimo C ++; mes panaudojome dvi skirtingas bibliotekas, kad išanalizuotume JSON duomenis C ++. Mes ištyrėme tris skirtingus pavyzdžius, norėdami parodyti JSON duomenų analizavimo mechanizmą C ++. Palyginti su „nlohmann“ biblioteka, „RapidJSON“ yra nedidelis, greitas ir draugiškas atminčiai.