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ě uspořádaných seznamů a párů klíč – hodnota. JSON znamená J. ava S cript NEBO bjekt N. otace. 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ž ve formátu XML.
Pravidlo syntaxe JSON
Zde 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á 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. Zde je klíčové jméno a Drake je odpovídající hodnota. Klíč, tj. Jméno a hodnota, tj. 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 ‚employee.json‘. Jednalo by se o 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á v složených závorkách. Zde je ukázkový objekt JSON:
{název:Kačer,
ID zaměstnance:23547a,
Telefon: 23547,
oddělení:Finance
}
Objekt JSON může obsahovat více dat JSON. Všechna data JSON jsou oddělena čárkou. Data JSON jsou reprezentována jako páry klíč – hodnota. Klíč, tj. Jméno a hodnota, tj. 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 tomu odpovídající hodnota. Podobně další tři klíče jsou EmployeeID, Phone a Department.
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':[{'jméno':'Sean', 'příjmení':'Hnědý'},
{'jméno':'Kačer', 'příjmení':'Williams'},
{'jméno':'Tom', 'příjmení':'Mlynář'},
{jméno:Petr,příjmení:Johnson}
]
Toto je příklad pole JSON. Zde jsou studenti uzavřeni hranatou závorkou, tj. Polem, 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
Protože jsme rozuměli datům JSON, objektům JSON, poli JSON, podívejme se na příklad souboru JSON:
{jméno:Sean,
příjmení:Hnědý,
ID studenta: 21453,
oddělení:Computer Sc.,
Předměty:[Matematika,Phy,Chem]
}
Analýza knihoven v C ++:
Neexistuje žádné nativní řešení pro analýzu dat JSON v C ++. Existuje však několik knihoven pro analýzu dat JSON v C ++. V tomto článku se podíváme na dvě nejoblíbenější knihovny pro analýzu dat JSON v C ++. Zde jsou odkazy na GitHub pro analýzu dat JSON:
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 analýzy. Podívejme se nyní na několik příkladů k analýze dat JSON v C ++:
- Příklad-1: Analyzujte JSON v C ++
- Příklad-2: Analyzujte a serializujte JSON v C ++
- Příklad 3: Analyzujte JSON v C ++
V případě příkladu 1 a příkladu 2 použijeme knihovnu nlohmann. V případě příkladu-3 použijeme knihovnu RapidJSON.
Příklad-1: Analyzujte JSON v C ++
V tomto ukázkovém programu si předvedeme, jak přistupovat k hodnotám dat JSON v C ++.
#zahrnout#include 'json.hpp'
pomocí json=nlohmann::json;
inthlavní()
{
// jdZaměstnanci
json jdZaměstnanci=
{
{'jméno','Sean'},
{'příjmení','Hnědý'},
{'StudentID',21453},
{'Oddělení','Computer Sc.'}
};
// Přístup k hodnotám
hodiny::tětivafName=jdZaměstnanci.hodnota('jméno', 'oops');
hodiny::tětivalName=jdZaměstnanci.hodnota('příjmení', 'oops');
intsID=jdZaměstnanci.hodnota('StudentID', 0);
hodiny::tětivaodd=jdZaměstnanci.hodnota('Oddělení', 'oops');
// Vytiskněte hodnoty
hodiny::náklady << 'Jméno: ' <<fName<<hodiny::endl;
hodiny::náklady << 'Příjmení: ' <<lName<<hodiny::endl;
hodiny::náklady << 'Student ID:' <<sID<<hodiny::endl;
hodiny::náklady << 'Oddělení: ' <<odd<<hodiny::endl;
vrátit se 0;
}
Příklad-2: Analyzujte a serializujte 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;
inthlavní()
{
// Zde je text JSON
chartext[] =R.'(
{
'Rezervovat': {
'Šířka': 450,
'Výška': 30,
'Titul':'Ahoj světe',
'jeBiografie': Nepravdivé,
'Počet kopií“: 4,
'ID knihoven“: [2319, 1406, 3854, 987]
}
}
) ';
// Pojďme analyzovat a serializovat JSON
json j_complete=json::analyzovat(text);
hodiny::náklady <<hodiny::setw(4) <<j_kompletní<<hodiny::endl;
}
Příklad 3: Analyzujte JSON v C ++
Nyní si ukážeme, jak analyzovat řetězec JSON pomocí knihovny RapidJSON. RapidJSON byl původně inspirován RapidXML. V tomto příkladu programu analyzujeme řetězec JSON do DOM. Deklarovali jsme mydoc typu Document a poté pomocí metody mydoc.parse () analyzovali řetězec JSON.
#zahrnout#include 'rapidjson/writer.h'
#include 'rapidjson/document.h'
#include 'rapidjson/stringbuffer.h'
pomocí namespace rapidjson;
inthlavní()
{
konst char*json= '{'jméno':'Sean','příjmení':'Hnědý','empId“: 21453,
'oddělení':'Computer Sc.'}';
// Analyzujte řetězec JSON do DOM
Dokument mydoc;
mydoc.Analyzovat(json);
// DOM na řetězec
Vyrovnávací paměť StringBuffer;
Spisovatel<StringBuffer>spisovatel(vyrovnávací paměť);
mydoc.Přijmout(spisovatel);
// Vytiskněte výstup
hodiny::náklady <<vyrovnávací paměť.GetString() <<hodiny::endl;
vrátit se 0;
}
Závěr
V tomto článku jsme krátce diskutovali JSON data, objekt, pole a syntaxe. Jak víme, neexistuje žádné nativní řešení pro analýzu dat JSON v C ++; použili jsme dvě různé knihovny k analýze dat JSON v C ++. Zkoumali jsme tři různé příklady, abychom předvedli mechanismus analýzy dat JSON v C ++. Ve srovnání s knihovnou nlohmann je RapidJSON malý, rychlý a přátelský k paměti.