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:
- Data JSON by měla být vždy ve formě párů klíč – hodnota.
- Data JSON jsou oddělena čárkami.
- K reprezentaci objektu JSON se používá složená závorka.
- 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:
- https: // github.com / nlohmann / json
- 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 ++:
- Příklad 1: Analyzovat JSON v C++
- Příklad 2: Analyzovat a serializovat JSON v C++
- Příklad 3: Analyzovat 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
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ý.