C ++

Sådan analyseres JSON i C ++

Sådan analyseres JSON i C ++
Hensigten med denne tutorial er at forstå JSON-dataene og hvordan man parser JSON-data i C++. Vi vil diskutere JSON-data, Object, Array, JSON-syntaks og derefter gennemgå flere arbejdseksempler for at forstå parseringsmekanismen for JSON-data i C++.

Hvad er JSON?

JSON er en letvægts tekstbaseret repræsentation til lagring og overførsel af strukturerede data på en organiseret måde. JSON-dataene er repræsenteret i form af ordnede lister og nøgleværdipar. JSON står for JavaSkrybbe Object Notation. Som det fulde navn indikerer, stammer det fra JavaScript. Imidlertid understøttes JSON-data på de fleste af de populære programmeringssprog.

Det bruges ofte til at overføre data fra serveren til en webside. Det er meget nemmere og renere at repræsentere de strukturerede data i JSON end XML.

JSON-syntaksregel

Her er JSON-syntaksreglerne:

  1. JSON-data skal altid være i form af nøgleværdipar.
  2. JSON Data er adskilt med kommaer.
  3. En krøllet bøjle bruges til at repræsentere JSON Object.
  4. En firkantet parentes bruges til at repræsentere en JSON Array.

Hvad er JSON Data?

JSON-dataene er repræsenteret i form af nøgleværdipar. Dette svarer til en ordbog eller hash på andre programmeringssprog.

“Navn”: ”Drake”

Dette er et eksempel på enkle JSON-data. Nøglen her er "Navn" og "Drake" er den tilsvarende værdi. Nøglen, jeg.e., "Navn" og værdien, i.e., "Drake" er adskilt af et kolon.

JSON filtypenavn

JSON-dataene gemmes normalt i filen med filtypenavnet “.json ”. For eksempel for at gemme medarbejderens data kan du blot navngive filen som 'medarbejder.json '. Dette ville være en simpel tekstfil. Du kan derefter åbne denne JSON-fil i en hvilken som helst af dine foretrukne teksteditorer.

JSON-objekt

JSON-objektet er intet andet end JSON-data, der er lukket i de krøllede seler. Her er et eksempel på et JSON-objekt:


"Navn": "Drake",
“Medarbejder-id”: “23547a”,
“Telefon”: “23547”,
“Afdeling”: “Finans”

Et JSON-objekt kan indeholde flere JSON-data. Hver JSON-data er adskilt med et komma. JSON-data er repræsenteret som nøgleværdipar. Nøglen, jeg.e., "Navn" og værdien, i.e., "Drake" er adskilt af et kolon. I ovenstående eksempel er der fire nøgleværdipar. Den første nøgle er "Navn"; "Drake" er den tilsvarende værdi for det. Tilsvarende er “Medarbejder-ID”, “Telefon” og “Afdeling” de tre andre nøgler.

JSON Array

Et JSON-array kan indeholde flere komma-adskilte JSON-objekter. JSON-arrayet er lukket inden for en firkantet parentes. Lad os se på et eksempel på et JSON-array:

"Studerende":[
"firstName": "Sean", "lastName": "Brown",
"firstName": "Drake", "lastName": "Williams",
"firstName": "Tom", "lastName": "Miller",
“FirstName”: ”Peter”, “lastName”: “Johnson”
]

Dette er et eksempel på et JSON-array. Her er "Studerende" lukket med en firkantet parentes, dvs.e., array, og den indeholder fire JSON-objekter. Hvert af disse objekter er repræsenteret i form af nøgleværdipar og adskilles med et komma.

En JSON-prøveeksempel

Nu, da vi forstod JSON-data, JSON-objekter, JSON-array, lad os se på et eksempel på en JSON-fil:


“FirstName”: “Sean”,
“LastName”: “Brown”,
“Studenter-id”: 21453,
“Afdeling”: “Computer Sc.”,
"Emner": ["Matematik", "Phy", "Chem"]

Analyse af biblioteker i C ++:

Der er ingen indbygget løsning til parsing af JSON-data i C++. Der er dog flere biblioteker til at analysere JSON-data i C++. I denne artikel vil vi se på de to mest populære biblioteker til at analysere JSON-data i C++. Her er GitHub-linkene til parsing af JSON-data:

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

Det kan være en god idé at downloade disse biblioteker for at kunne udføre eksemplerne vist nedenfor.

Eksempler

Nu har vi en grundlæggende forståelse af JSON-data, objekter, arrays og tilgængelige parseringsbiblioteker. Lad os nu se på et par eksempler til at analysere JSON-data i C ++:

For eksempel-1 og eksempel-2 vil vi gøre brug af "nlohmann" -biblioteket. I tilfælde af eksempel 3 bruger vi "RapidJSON" -biblioteket.

Eksempel 1: Analyse JSON i C++

I dette eksempelprogram vil vi demonstrere, hvordan du får adgang til værdier for JSON-data i C++.

#omfatte
# inkluderer "json.hpp "
ved hjælp af json = nlohmann :: json;
int main ()

// jdMedarbejdere
json jdMedarbejdere =

"fornavn", "Sean",
"efternavn", "brun",
"StudentID", 21453,
"Afdeling", "Computer Sc."
;
// Få adgang til værdierne
std :: string fName = jdMedarbejdere.værdi ("fornavn", "oops");
std :: string lName = jdMedarbejdere.værdi ("efternavn", "oops");
int sID = jdMedarbejdere.værdi ("StudentID", 0);
std :: streng dept = jdMedarbejdere.værdi ("Afdeling", "oops");
// Udskriv værdierne
std :: cout << "First Name: " << fName << std::endl;
std :: cout << "Last Name: " << lName << std::endl;
std :: cout << "Student ID: " << sID << std::endl;
std :: cout << "Department: " << dept << std::endl;
returnere 0;

Eksempel 2: Analyse og serialisering af JSON i C++

I dette eksempelprogram skal vi se, hvordan man analyserer og serialiserer JSON i C++. Vi bruger “json :: parse ()” til at analysere JSON-dataene.

#omfatte
# inkluderer "json.hpp "
#omfatte
ved hjælp af json = nlohmann :: json;
int main ()

// Her er en JSON-tekst
char tekst [] = R "(

"Bestil":
"Bredde": 450,
"Højde": 30,
"Titel": "Hej verden",
"isBiography": falsk,
"NumOfCopies": 4,
"LibraryIDs": [2319, 1406, 3854, 987]


) ";
// Lad os analysere og serieisere JSON
json j_complete = json :: analyse (tekst);
std :: cout << std::setw(4) << j_complete << std::endl;

Eksempel 3: Analyse JSON i C++

Nu vil vi demonstrere, hvordan man parser JSON-streng ved hjælp af RapidJSON-biblioteket. RapidJSON blev oprindeligt inspireret af RapidXML. I dette eksempelprogram analyserer vi en JSON-streng i DOM. Vi har erklæret "mydoc" af typen "Document" og derefter brugt "mydoc.parse () ”metode til at analysere JSON-strengen.

#omfatte
#include "rapidjson / writer.h "
#include "rapidjson / document.h "
#include "rapidjson / stringbuffer.h "
ved hjælp af namespace rapidjson;
int main ()

const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
"department": "Computer Sc.""
// Parser JSON-strengen i DOM
Dokument mydoc;
mydoc.Parse (json);
// DOM til streng
StringBuffer buffer;
Forfatter forfatter (buffer);
mydoc.Accepter (forfatter);
// Udskriv output
std :: cout << buffer.GetString() << std::endl;
returnere 0;

Konklusion

I denne artikel har vi kort diskuteret JSON-data, objekt, array og syntaks. Som vi ved, er der ingen native løsning til JSON-dataparsering i C ++; Vi har brugt to forskellige biblioteker til at analysere JSON-data i C++. Vi kiggede på tre forskellige eksempler for at demonstrere JSON-dataparseringsmekanismen i C++. Sammenlignet med "nlohmann" -biblioteket er RapidJSON lille, hurtig og hukommelsesvenlig.

Mus WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
Hvis du vil forbedre standardfunktionerne for din musemarkør, skal du bruge freeware WinMouse. Det tilføjer flere funktioner, der hjælper dig med at f...
Mus Museklik på venstre museknap fungerer ikke på Windows 10
Museklik på venstre museknap fungerer ikke på Windows 10
Hvis du bruger en dedikeret mus med din bærbare computer eller stationære computer, men musens venstre-klik-knap fungerer ikke på Windows 10/8/7 af en...
Mus Markøren hopper eller bevæger sig tilfældigt, mens han skriver i Windows 10
Markøren hopper eller bevæger sig tilfældigt, mens han skriver i Windows 10
Hvis du finder ud af, at din musemarkør hopper eller bevæger sig alene, automatisk tilfældigt, mens du skriver Windows-bærbar computer eller computer,...