Hur man analyserar JSON i C ++

How Parse Json C



Avsikten med denna handledning är att förstå JSON -data och hur man analyserar JSON -data i C ++. Vi kommer att diskutera JSON -data, Object, Array, JSON -syntax och sedan gå igenom flera arbetsexempel för att förstå analysmekanismen för JSON -data i C ++.

Vad är JSON?

JSON är en lätt textbaserad representation för lagring och överföring av strukturerad data på ett organiserat sätt. JSON-data representeras i form av ordnade listor och nyckel-värdepar. JSON står för J ava S cript ELLER bject N otation. Som det fullständiga namnet indikerar kommer det från JavaScript. JSON -data stöds dock i de flesta av de populära programmeringsspråken.







Det används ofta för att överföra data från servern till en webbsida. Det är mycket lättare och renare att representera de strukturerade data i JSON än XML.



JSON Syntaxregel

Här är JSON -syntaxreglerna:



  1. JSON-data bör alltid vara i form av nyckel-värdepar.
  2. JSON Data separeras med kommatecken.
  3. En Curly hängslen används för att representera JSON Object.
  4. Ett hakparentes används för att representera en JSON -matris.

Vad är JSON -data?

JSON-data representeras i form av nyckel-värdepar. Detta liknar en ordbok eller hash på andra programmeringsspråk.





Namn: Drake

Detta är ett exempel på enkla JSON -data. Nyckeln här är Namn och Drake är motsvarande värde. Nyckeln, dvs Namn och värde, dvs Drake separeras med ett kolon.



JSON filändelse

JSON -data lagras normalt i filen med tillägget .json. Till exempel, för att lagra den anställdes data, kan du helt enkelt namnge filen som 'anställd.json'. Detta skulle vara en enkel textfil. Du kan sedan öppna denna JSON -fil i valfri textredigerare.

JSON Object

JSON -objektet är inget annat än JSON -data som ingår i de lockiga hängslen. Här är ett exempel på JSON -objekt:

{
namn:Ankbonde,
Anställnings-ID:23547a,
Telefon: 23547,
Avdelning:Finansiera
}

Ett JSON -objekt kan innehålla flera JSON -data. Varje JSON -data separeras med ett kommatecken. JSON-data representeras som nyckel-värdepar. Nyckeln, dvs Namn och värde, dvs Drake separeras med ett kolon. I exemplet ovan finns det fyra nyckel-värdepar. Den första nyckeln är Namn; Drake är motsvarande värde för det. På samma sätt är EmployeeID, Phone och Department de tre andra nycklarna.

JSON Array

En JSON-array kan innehålla flera kommaseparerade JSON-objekt. JSON -arrayen är innesluten i en hakparentes. Låt oss titta på ett exempel på en JSON -array:

'Studenter':[
{'förnamn':'Sean', 'efternamn':'Brun'},
{'förnamn':'Ankbonde', 'efternamn':'Williams'},
{'förnamn':'Tom', 'efternamn':'Mjölnare'},
{förnamn:Peter,efternamn:Johnson}
]

Detta är ett exempel på en JSON -array. Här omsluts studenterna med en hakparentes, dvs. array, och den innehåller fyra JSON -objekt. Var och en av dessa objekt representeras i form av nyckel-värdepar och separeras med ett kommatecken.

Ett exempel på en JSON -fil

Nu, eftersom vi förstod JSON -data, JSON -objekt, JSON -array, låt oss titta på ett exempel på en JSON -fil:

{
förnamn:Sean,
efternamn:Brun,
Student-ID: 21453,
Avdelning:Dator Sc.,
Ämnen:[Matematik,Phy,Chem]
}

Analysera bibliotek i C ++:

Det finns ingen inbyggd lösning för att analysera JSON -data i C ++. Det finns dock flera bibliotek för att analysera JSON -data i C ++. I den här artikeln kommer vi att titta på de två mest populära biblioteken för att analysera JSON -data i C ++. Här är GitHub -länkarna för analys av JSON -data:

  1. https://github.com/nlohmann/json
  2. https://github.com/Tencent/rapidjson/

Du kanske vill ladda ner dessa bibliotek för att kunna exekvera exemplen som visas nedan.

Exempel

Nu har vi en grundläggande förståelse för JSON -data, objekt, matriser och tillgängliga analysbibliotek. Låt oss nu titta på ett par exempel för att analysera JSON -data i C ++:

  • Exempel-1: Analysera JSON i C ++
  • Exempel 2: Analysera och serialisera JSON i C ++
  • Exempel-3: Analysera JSON i C ++

För exempel-1 och exempel-2 kommer vi att använda nlohmann-biblioteket. När det gäller exempel-3 kommer vi att använda RapidJSON-biblioteket.

Exempel-1: Analysera JSON i C ++

I detta exempelprogram kommer vi att visa hur du får åtkomst till värden för JSON -data i C ++.

#omfatta
#inkludera 'json.hpp'

använder json=nlohmann::json;

inthuvud()
{

// jdMedarbetare
json jdAnställda=
{
{'förnamn','Sean'},
{'efternamn','Brun'},
{'Student-ID',21453},
{'Avdelning','Computer Sc.'}
};

// Få tillgång till värdena
timmar::strängfName=jdAnställda.värde('förnamn', 'hoppsan');
timmar::stränglNamn=jdAnställda.värde('efternamn', 'hoppsan');
intsID=jdAnställda.värde('Student-ID', 0);
timmar::strängavd=jdAnställda.värde('Avdelning', 'hoppsan');

// Skriv ut värdena
timmar::kosta << 'Förnamn: ' <<fName<<timmar::endl;
timmar::kosta << 'Efternamn: ' <<lNamn<<timmar::endl;
timmar::kosta << 'Student-ID: ' <<sID<<timmar::endl;
timmar::kosta << 'Avdelning:' <<avd<<timmar::endl;

lämna tillbaka 0;
}

Exempel 2: Analysera och serialisera JSON i C ++

I detta exempelprogram kommer vi att se hur man analyserar och serialiserar JSON i C ++. Vi använder json :: parse () för att analysera JSON -data.

#omfatta
#inkludera 'json.hpp'
#omfatta

använder json=nlohmann::json;

inthuvud()
{
// Här är en JSON -text
rödingtext[] =R'(
{
'
bok': {
'
Bredd': 450,
'
Höjd': 30,
'
Titel':'Hej världen',
'
är Biografi': falskt,
'
NumOfCopies': 4,
'
LibraryIDs': [2319, 1406, 3854, 987]
}
}
) '
;

// Låt oss analysera och serialisera JSON
json j_complete=json::analysera(text);
timmar::kosta <<timmar::setw(4) <<j_complete<<timmar::endl;
}

Exempel-3: Analysera JSON i C ++

Nu kommer vi att visa hur man analyserar JSON -strängen med RapidJSON -biblioteket. RapidJSON inspirerades ursprungligen av RapidXML. I detta exempelprogram analyserar vi en JSON -sträng i DOM. Vi har deklarerat mydoc av typen Document och sedan med metoden mydoc.parse () för att analysera JSON -strängen.

#omfatta
#inkludera 'rapidjson/writer.h'
#inkludera 'rapidjson/document.h'
#inkludera 'rapidjson/stringbuffer.h'

med namnutrymme rapidjson;

inthuvud()
{

konst röding*json= '{'förnamn':'Sean','efternamn':'Brun','empId': 21453,
'
avdelning':'Dator Sc.'}';

// Analysera JSON -strängen i DOM
Dokumentera mydoc;
mydoc.Analysera(json);

// DOM till sträng
StringBuffer -buffert;
Författare<StringBuffer>författare(buffert);

mydoc.Acceptera(författare);

// Skriv ut utskriften
timmar::kosta <<buffert.GetString() <<timmar::endl;

lämna tillbaka 0;
}

Slutsats

I denna artikel har vi kort diskuterat JSON data, objekt, matris och syntax. Som vi vet finns det ingen inbyggd lösning för JSON -dataanalys i C ++; vi har använt två olika bibliotek för att analysera JSON -data i C ++. Vi undersökte tre olika exempel för att demonstrera JSON -dataanpassningsmekanismen i C ++. Jämfört med nlohmann-biblioteket är RapidJSON liten, snabb och minnesvänlig.