C ++

Ako analyzovať JSON v C ++

Ako analyzovať JSON v C ++
Účelom tohto tutoriálu je porozumieť údajom JSON a tomu, ako analyzovať údaje JSON v jazyku C++. Budeme diskutovať o údajoch JSON, Object, Array, syntaxi JSON a potom si prejdeme niekoľko pracovných príkladov, aby sme pochopili mechanizmus syntaktickej analýzy údajov JSON v C++.

Čo je to JSON?

JSON je ľahká textová reprezentácia na organizované ukladanie a prenos štruktúrovaných údajov. Údaje JSON sú reprezentované vo forme zoradených zoznamov a párov kľúč - hodnota. JSON znamená JavaScript Object Notácie. Ako naznačuje celý názov, je odvodený od JavaScriptu. Údaje JSON sú však podporované vo väčšine populárnych programovacích jazykov.

Často sa používa na prenos údajov zo servera na webovú stránku. Je oveľa jednoduchšie a čistejšie reprezentovať štruktúrované údaje v JSON ako XML.

Pravidlo syntaxe JSON

Tu sú pravidlá syntaxe JSON:

  1. Údaje JSON by mali byť vždy vo forme párov kľúč - hodnota.
  2. Údaje JSON sú oddelené čiarkami.
  3. Na reprezentáciu objektu JSON sa používa zložená zátvorka.
  4. Hranatá zátvorka sa používa na vyjadrenie poľa JSON.

Čo sú údaje JSON?

Údaje JSON sú reprezentované vo forme párov kľúč - hodnota. Je to podobné ako slovník alebo hash v iných programovacích jazykoch.

„Meno“: „Drake“

Toto je príklad jednoduchých údajov JSON. Kľúč je tu „Meno“ a „Drake“ je zodpovedajúca hodnota. Kľúč, t.j.e., „Meno“ a hodnota, t.j.e., „Drake“ sú oddelené dvojbodkou.

Prípona súboru JSON

Údaje JSON sa zvyčajne ukladajú do súboru s príponou „.json ”. Napríklad na uloženie údajov zamestnanca môžete súbor jednoducho pomenovať ako „zamestnanec“.json '. Bol by to jednoduchý textový súbor. Tento súbor JSON potom môžete otvoriť v ktoromkoľvek zo svojich obľúbených textových editorov.

Objekt JSON

Objekt JSON nie je nič iné ako údaje JSON uzavreté v zložených zátvorkách. Tu je vzorový objekt JSON:


„Meno“: „Drake“,
„Employee ID“: „23547a“,
„Phone“: „23547“,
„Department“: „Finance“

Objekt JSON môže obsahovať viac údajov JSON. Každé údaje JSON sú oddelené čiarkou. Údaje JSON sú reprezentované ako páry kľúč - hodnota. Kľúč, t.j.e., „Meno“ a hodnota, t.j.e., „Drake“ sú oddelené dvojbodkou. Vo vyššie uvedenom príklade existujú štyri páry kľúč - hodnota. Prvý kľúč je „Meno“; „Drake“ je pre neho zodpovedajúca hodnota. Podobne „Zamestnanec“, „Telefón“ a „Oddelenie“ sú ďalšie tri kľúče.

JSON pole

Pole JSON môže obsahovať niekoľko objektov JSON oddelených čiarkami. Pole JSON je uzavreté v hranatej zátvorke. Pozrime sa na príklad poľa JSON:

„Študenti“: [
"firstName": "Sean", "lastName": "Brown",
"firstName": "Drake", "lastName": "Williams",
"firstName": "Tom", "lastName": "Miller",
„FirstName“: „Peter“, „lastName“: „Johnson“
]

Toto je príklad poľa JSON. Tu je „Študenti“ uzavretý so štvorcovou zátvorkou, t.j.e., pole a obsahuje štyri objekty JSON. Každý z týchto objektov je reprezentovaný vo forme párov kľúč - hodnota a je oddelený čiarkou.

Vzorový súbor JSON

Teraz, keď sme pochopili údaje JSON, objekty JSON, pole JSON, pozrime sa na príklad súboru JSON:


“FirstName”: “Sean”,
„LastName“: „hnedá“,
„ID študenta“: 21453,
„Department“: „Počítač Sc.“,
„Subjekty“: [„Matematika“, „Fy“, „Chem“]

Analýza knižníc v C ++:

Neexistuje žiadne natívne riešenie na analýzu údajov JSON v jazyku C++. Existuje však niekoľko knižníc na analýzu údajov JSON v jazyku C++. V tomto článku sa pozrieme na dve najobľúbenejšie knižnice na analýzu údajov JSON v jazyku C++. Tu sú odkazy na GitHub na analýzu údajov JSON:

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

Možno budete chcieť stiahnuť tieto knižnice, aby ste mohli vykonávať nižšie uvedené príklady.

Príklady

Teraz máme základné znalosti o dátach JSON, objektoch, poliach a dostupných knižniciach syntaktickej analýzy. Pozrime sa teraz na niekoľko príkladov na analýzu údajov JSON v C ++:

Pre príklady 1 a 2 použijeme knižnicu „nlohmann“. V prípade príkladu 3 použijeme knižnicu „RapidJSON“.

Príklad 1: Analýza kódu JSON v jazyku C++

V tomto príklade programu si ukážeme, ako získať prístup k hodnotám údajov JSON v jazyku C++.

#include
#include „json.hpp "
pomocou json = nlohmann :: json;
int main ()

// jdZamestnanci
json jdEmployees =

"firstName", "Sean",
"lastName", "Brown",
"StudentID", 21453,
"Department", "Computer Sc.„
;
// Prístup k hodnotám
std :: string fName = jdZamestnanci.hodnota ("meno", "ups");
std :: string lName = jdZamestnanci.hodnota ("priezvisko", "oops");
int sID = jdZamestnanci.hodnota ("StudentID", 0);
std :: string odd = jdZamestnanci.hodnota („Oddelenie“, „ups“);
// Vytlačte hodnoty
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;
návrat 0;

Príklad 2: Analyzovať a serializovať JSON v C++

V tomto príklade programu uvidíme, ako analyzovať a serializovať JSON v C++. Na analýzu údajov JSON používame „json :: parse ()“.

#include
#include „json.hpp "
#include
pomocou json = nlohmann :: json;
int main ()

// Tu je text JSON
char text [] = R "(

„Kniha“:
"Šírka": 450,
"Výška": 30,
"Title": "Hello World",
"isBiography": false,
„NumOfCopies“: 4,
„LibraryIDs“: [2319, 1406, 3854, 987]


) ";
// Poďme analyzovať a serializovať JSON
json j_complete = json :: parse (text);
std :: cout << std::setw(4) << j_complete << std::endl;

Príklad 3: Analýza kódu JSON v jazyku C++

Teraz si ukážeme, ako analyzovať reťazec JSON pomocou knižnice RapidJSON. RapidJSON sa pôvodne inšpiroval RapidXML. V tomto príklade programu analyzujeme reťazec JSON na DOM. Vyhlásili sme „mydoc“ typu „Dokument“ a potom použijeme „mydoc“.metóda parse () na analýzu reťazca JSON.

#include
#include „rapidjson / spisovateľ.h "
#include „rapidjson / dokument.h "
#include "rapidjson / stringbuffer.h "
pomocou menného priestoru rapidjson;
int main ()

const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
"department": "Počítač Sc."";
// Analyzujte reťazec JSON do modelu DOM
Dokument mydoc;
mydoc.Analýza (json);
// DOM na reťazec
StringBuffer medzipamäť;
Spisovateľ spisovateľ (medzipamäť);
mydoc.Prijať (spisovateľ);
// Vytlačí výstup
std :: cout << buffer.GetString() << std::endl;
návrat 0;

Záver

V tomto článku sme sa v krátkosti venovali údajom, objektom, poľom a syntaxe JSON. Ako vieme, pre analýzu dát JSON v C ++ neexistuje natívne riešenie; na analýzu údajov JSON v jazyku C sme použili dve rôzne knižnice++. Pozreli sme sa na tri rôzne príklady, aby sme demonštrovali mechanizmus analýzy údajov JSON v jazyku C++. V porovnaní s knižnicou „nlohmann“ je RapidJSON malý, rýchly a nenáročný na pamäť.

Hry Najlepšie linuxové distribúcie pre hry v roku 2021
Najlepšie linuxové distribúcie pre hry v roku 2021
Operačný systém Linux prešiel dlhou cestou od svojho originálneho, jednoduchého serverového vzhľadu. Tento OS sa za posledné roky nesmierne vylepšil a...
Hry Ako zachytiť a streamovať vašu hernú reláciu v systéme Linux
Ako zachytiť a streamovať vašu hernú reláciu v systéme Linux
V minulosti sa hranie hier považovalo iba za hobby, ale časom došlo v hernom priemysle k obrovskému nárastu z hľadiska technológie i počtu hráčov. Her...
Hry Najlepšie hry na hranie s ručným sledovaním
Najlepšie hry na hranie s ručným sledovaním
Oculus Quest nedávno predstavil skvelú myšlienku ručného sledovania bez ovládačov. Vďaka stále sa zvyšujúcemu počtu hier a aktivít, ktoré vykonávajú p...