C ++

Jak analyzovat JSON v C ++

Jak analyzovat JSON v C ++
Záměrem tohoto kurzu je pochopit data JSON a jak analyzovat data JSON v C++. Budeme diskutovat o datech JSON, Object, Array, syntaxi JSON a poté projdeme několika pracovními příklady, abychom pochopili mechanismus syntézy dat JSON v C++.

Co je JSON?

JSON je lehká textová reprezentace pro organizované ukládání a přenos strukturovaných dat. Data JSON jsou reprezentována ve formě seřazených seznamů a párů klíč – hodnota. JSON znamená JavaSkrypt Óbject Notace. Jak naznačuje celý název, je odvozen z JavaScriptu. Data JSON jsou však podporována ve většině populárních programovacích jazyků.

Často se používá k přenosu dat ze serveru na webovou stránku. Je mnohem jednodušší a čistší reprezentovat strukturovaná data v JSON než XML.

Pravidlo syntaxe JSON

Tady jsou pravidla syntaxe JSON:

  1. Data JSON by měla být vždy ve formě párů klíč – hodnota.
  2. Data JSON jsou oddělena čárkami.
  3. K reprezentaci objektu JSON se používá složená závorka.
  4. K reprezentaci pole JSON se používá hranatá závorka.

Co jsou data JSON?

Data JSON jsou reprezentována ve formě párů klíč – hodnota. Je to podobné jako slovník nebo hash v jiných programovacích jazycích.

„Jméno“: „Drake“

Toto je příklad jednoduchých dat JSON. Klíč je zde „Jméno“ a „Drake“ je odpovídající hodnota. Klíč, tj.E., „Jméno“ a hodnota, tj.E., „Drake“ jsou odděleny dvojtečkou.

Přípona souboru JSON

Data JSON jsou obvykle uložena v souboru s příponou „.JSON ”. Chcete-li například uložit data zaměstnance, můžete soubor jednoduše pojmenovat jako „zaměstnanec“.JSON '. Byl by to jednoduchý textový soubor. Tento soubor JSON pak můžete otevřít v kterémkoli ze svých oblíbených textových editorů.

Objekt JSON

Objekt JSON není nic jiného než data JSON uzavřená ve složených závorkách. Zde je ukázkový objekt JSON:


„Jméno“: „Drake“,
„Employee ID“: „23547a“,
„Phone“: „23547“,
„Department“: „Finance“

Objekt JSON může obsahovat více dat JSON. Každá data JSON jsou oddělena čárkou. Data JSON jsou reprezentována jako páry klíč – hodnota. Klíč, tj.E., „Název“ a hodnota, tj.E., „Drake“ jsou odděleny dvojtečkou. Ve výše uvedeném příkladu existují čtyři páry klíč – hodnota. První klíč je „Jméno“; „Drake“ je pro něj odpovídající hodnota. Podobně „EmployeeID“, „Phone“ a „Department“ jsou další tři klíče.

Pole JSON

Pole JSON může obsahovat několik objektů JSON oddělených čárkami. Pole JSON je uzavřeno do hranaté závorky. Podívejme se na příklad pole JSON:

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

Toto je příklad pole JSON. Zde je „Studenti“ uzavřen s hranatou závorkou, tj.E., pole a obsahuje čtyři objekty JSON. Každý z těchto objektů je reprezentován ve formě párů klíč – hodnota a je oddělen čárkou.

Ukázkový soubor JSON

Nyní, protože jsme pochopili data JSON, objekty JSON, pole JSON, podívejme se na příklad souboru JSON:


“FirstName”: “Sean”,
„LastName“: „Brown“,
„Student ID“: 21453,
„Department“: „Počítač Sc.“,
„Subjekty“: [„Matematika“, „Phy“, „Chem“]

Analýza knihoven v C ++:

Neexistuje žádné nativní řešení pro analýzu dat JSON v jazyce C++. Existuje však několik knihoven pro analýzu dat JSON v jazyce C++. V tomto článku se podíváme na dvě nejoblíbenější knihovny pro analýzu dat JSON v jazyce C++. Tady jsou odkazy GitHub pro analýzu dat JSON:

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

Možná budete chtít stáhnout tyto knihovny, abyste mohli provádět níže uvedené příklady.

Příklady

Nyní máme základní znalosti o datech JSON, objektech, polích a dostupných knihovnách pro analýzu. Podívejme se nyní na několik příkladů k analýze dat JSON v C ++:

U příkladů 1 a 2 použijeme knihovnu „nlohmann“. V případě Příkladu 3 použijeme knihovnu „RapidJSON“.

Příklad 1: Analyzovat JSON v C++

V tomto ukázkovém programu si ukážeme, jak přistupovat k hodnotám dat JSON v jazyce C++.

#zahrnout
#include „json.hpp "
pomocí json = nlohmann :: json;
int main ()

// jdZaměstnanci
json jdEmployees =

"firstName", "Sean",
"lastName", "Brown",
"StudentID", 21453,
"Oddělení", "Počítač Sc.„
;
// Přístup k hodnotám
std :: string fName = jdZaměstnanci.hodnota ("křestní jméno", "oops");
std :: string lName = jdZaměstnanci.hodnota ("příjmení", "oops");
int sID = jdZaměstnanci.hodnota ("StudentID", 0);
std :: string odd = jdZaměstnanci.hodnota („Oddělení“, „oops“);
// Tisk hodnot
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;

Příklad 2: Analyzovat a serializovat JSON v C++

V tomto ukázkovém programu uvidíme, jak analyzovat a serializovat JSON v C++. K analýze dat JSON používáme „json :: parse ()“.

#zahrnout
#include „json.hpp "
#zahrnout
pomocí json = nlohmann :: json;
int main ()

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

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


) ";
// Pojďme analyzovat a serializovat JSON
json j_complete = json :: parse (text);
std :: cout << std::setw(4) << j_complete << std::endl;

Příklad 3: Analyzovat JSON v C++

Nyní si ukážeme, jak analyzovat řetězec JSON pomocí knihovny RapidJSON. RapidJSON byl původně inspirován RapidXML. V tomto ukázkovém programu analyzujeme řetězec JSON na DOM. Deklarovali jsme „mydoc“ typu „Dokument“ a poté jsme použili „mydoc“.metoda parse () ”pro analýzu řetězce JSON.

#zahrnout
#include "rapidjson / spisovatel.h "
#include "rapidjson / dokument.h "
#include "rapidjson / stringbuffer.h "
pomocí oboru názvů rapidjson;
int main ()

const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
"department": "Počítač Sc."";
// Analyzujte řetězec JSON na DOM
Dokument mydoc;
mydoc.Analyzovat (JSON);
// DOM na řetězec
Vyrovnávací paměť StringBuffer;
Spisovatel zapisovač (vyrovnávací paměť);
mydoc.Přijmout (spisovatel);
// Vytiskne výstup
std :: cout << buffer.GetString() << std::endl;
návrat 0;

Závěr

V tomto článku jsme stručně probrali data, objekt, pole a syntaxi JSON. Jak víme, pro analýzu dat JSON v C ++ neexistuje žádné nativní řešení; k analýze dat JSON v jazyce C jsme použili dvě různé knihovny++. Podívali jsme se na tři různé příklady, abychom demonstrovali mechanismus analýzy dat JSON v C++. Ve srovnání s knihovnou „nlohmann“ je RapidJSON malý, rychlý a paměťově nenáročný.

Hry Jak vyvíjet hru na Linuxu
Jak vyvíjet hru na Linuxu
Před deseti lety by jen málo uživatelů Linuxu předpovídalo, že jejich oblíbený operační systém bude jednoho dne populární herní platformou pro komerčn...
Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...
Hry Nejlepší hry z příkazového řádku pro Linux
Nejlepší hry z příkazového řádku pro Linux
Příkazový řádek není při používání Linuxu jen vaším největším spojencem - může být také zdrojem zábavy, protože jej můžete použít k hraní mnoha zábavn...