Ako analyzovať JSON v C ++

How Parse Json C



Cieľom tohto tutoriálu je porozumieť údajom JSON a ako analyzovať údaje JSON v C ++. Budeme diskutovať o dátach JSON, Object, Array, syntaxi JSON a potom si prejdeme niekoľko pracovných príkladov, aby sme pochopili mechanizmus analýzy údajov JSON v C ++.

Čo je JSON?

JSON je ľahká textová reprezentácia na organizované ukladanie a prenos štruktúrovaných údajov. Údaje JSON sú reprezentované vo forme usporiadaných zoznamov a párov kľúč-hodnota. JSON je skratka pre J ava S cript ALEBO bject N. otácia. Ako naznačuje úplný názov, je odvodený z 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 vo formáte JSON ako vo formáte XML.



Syntaxové pravidlo 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. Na reprezentáciu poľa JSON sa používa hranatá zátvorka.

Č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ľúčom je Meno a Drake je zodpovedajúca hodnota. Kľúč, t.j. meno a hodnota, tj. Drake, sú oddelené dvojbodkou.



Prípona súboru JSON

Údaje JSON sú zvyčajne uložené v súbore s príponou .json. Ak napríklad chcete uložiť údaje o zamestnancovi, môžete súbor jednoducho pomenovať ako „employee.json“. Toto by bol 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 ukážkový objekt JSON:

{
názov:Drake,
Identifikačné číslo zamestnanca:23547a,
Telefón: 23547,
Oddelenie:Financie
}

Objekt JSON môže obsahovať viacero údajov JSON. Všetky údaje JSON sú oddelené čiarkou. Údaje JSON sú reprezentované ako páry kľúč-hodnota. Kľúč, t.j. meno a hodnota, tj. Drake, sú oddelené dvojbodkou. Vo vyššie uvedenom príklade existujú štyri páry kľúč-hodnota. Prvý kľúč je Meno; Drake je tomu zodpovedajúca hodnota. Podobne ďalšie tri kľúče sú EmployeeID, telefón a oddelenie.

Pole JSON

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“:[
{'krstné meno':'Sean', 'priezvisko':'Hnedý'},
{'krstné meno':'Drake', 'priezvisko':„Williams“},
{'krstné meno':'Tom', 'priezvisko':'Miller'},
{krstné meno:Peter,priezvisko:Johnson}
]

Toto je príklad poľa JSON. Tu je študentom uzavretá hranatá zátvorka, tj. Pole, a obsahuje štyri objekty JSON. Každý z týchto objektov je reprezentovaný vo forme párov kľúč-hodnota a je oddelený čiarkou.

Ukážkový súbor JSON

Keď sme už rozumeli údajom JSON, objektom JSON, poľom JSON, pozrime sa na príklad súboru JSON:

{
krstné meno:Sean,
priezvisko:Hnedá,
Študentská karta: 21453,
Oddelenie:Computer Sc.,
Predmety:[Matematika,Phy,Chem]
}

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

Neexistuje žiadne natívne riešenie na analýzu údajov JSON v C ++. Existuje však niekoľko knižníc na analýzu údajov JSON v C ++. V tomto článku sa pozrieme na dve najobľúbenejšie knižnice na analýzu údajov JSON v 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ť príklady uvedené nižšie.

Príklady

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

  • Príklad 1: Analyzujte JSON v C ++
  • Príklad 2: Analyzujte a serializujte JSON v C ++
  • Príklad 3: Analyzujte JSON v C ++

V prípade príkladov 1 a príkladu 2 použijeme knižnicu nlohmann. V prípade príkladu-3 použijeme knižnicu RapidJSON.

Príklad 1: Analyzujte JSON v C ++

V tomto príklade programu ukážeme, ako pristupovať k hodnotám údajov JSON v C ++.

#zahrnúť
#include 'json.hpp'

pomocou json=nlohmann::json;

intHlavná()
{

// jdZamestnanci
json jdZamestnanci=
{
{'krstné meno','Sean'},
{'priezvisko','Hnedý'},
{'Študentská karta',21453},
{'Oddelenie','Computer Sc.'}
};

// Prístup k hodnotám
hodiny::reťazecfName=jdZamestnanci.hodnotu('krstné meno', 'oops');
hodiny::reťazeclName=jdZamestnanci.hodnotu('priezvisko', 'oops');
intsID=jdZamestnanci.hodnotu('Študentská karta', 0);
hodiny::reťazecdlh=jdZamestnanci.hodnotu('Oddelenie', 'oops');

// Vytlačte hodnoty
hodiny::náklady << 'Krstné meno: ' <<fName<<hodiny::endl;
hodiny::náklady << 'Priezvisko: ' <<lName<<hodiny::endl;
hodiny::náklady << 'Študentská karta: ' <<sID<<hodiny::endl;
hodiny::náklady << „Oddelenie:“ <<dlh<<hodiny::endl;

vrátiť sa 0;
}

Príklad 2: Analyzujte a serializujte 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 ().

#zahrnúť
#include 'json.hpp'
#zahrnúť

pomocou json=nlohmann::json;

intHlavná()
{
// Tu je text vo formáte JSON
chartext[] =R.'(
{
'
Kniha': {
'
Šírka“: 450,
'
Výška“: 30,
'
Názov':'Ahoj Svet',
'
je biografia': false,
'
NumOfCopies“: 4,
'
ID knižníc“: [2319, 1406, 3854, 987]
}
}
) '
;

// Poďme analyzovať a serializovať JSON
json j_complete=json::analyzovať(text);
hodiny::náklady <<hodiny::setw(4) <<j_kompletné<<hodiny::endl;
}

Príklad 3: Analyzujte JSON v C ++

Teraz ukážeme, ako analyzovať reťazec JSON pomocou knižnice RapidJSON. RapidJSON bol pôvodne inšpirovaný jazykom RapidXML. V tomto príklade analyzujeme reťazec JSON do DOM. Deklarovali sme mydoc typu Document a potom pomocou metódy mydoc.parse () analyzovali reťazec JSON.

#zahrnúť
#include 'rapidjson/writer.h'
#include 'rapidjson/document.h'
#include 'rapidjson/stringbuffer.h'

pomocou priestoru názvov rapidjson;

intHlavná()
{

konšt char*json= '{'krstné meno':'Sean','priezvisko':'Hnedá','empId“: 21453,
'
oddelenie':'Computer Sc.'}';

// Analyzujte reťazec JSON v DOM
Dokument mydoc;
mydoc.Analyzovať(json);

// DOM na reťazec
Vyrovnávacia pamäť StringBuffer;
Spisovateľ<StringBuffer>spisovateľ(nárazník);

mydoc.súhlasiť(spisovateľ);

// Vytlačte výstup
hodiny::náklady <<nárazník.GetString() <<hodiny::endl;

vrátiť sa 0;
}

Záver

V tomto článku sme stručne diskutovali JSON údaje, objekt, pole a syntax. Ako vieme, neexistuje žiadne natívne riešenie na analýzu údajov JSON v C ++; na analýzu údajov JSON v C ++ sme použili dve rôzne knižnice. Pozreli sme sa na tri rôzne príklady, aby sme predviedli mechanizmus syntaktickej analýzy údajov JSON v C ++. V porovnaní s knižnicou nlohmann je RapidJSON malý, rýchly a priateľský k pamäti.