Č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:
- Údaje JSON by mali byť vždy vo forme párov kľúč-hodnota.
- Údaje JSON sú oddelené čiarkami.
- Na reprezentáciu objektu JSON sa používa zložená zátvorka.
- 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:
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.