Jak analyzovat JSON v C ++

How Parse Json C

Záměrem tohoto kurzu je porozumět datům JSON a jak analyzovat data JSON v C ++. Diskutujeme o datech JSON, Object, Array, syntaxi JSON a poté projdeme několika pracovními příklady, abychom porozuměli mechanismu analý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ě 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:



  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á 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. 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:

  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 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.