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:
- JSON-data skal altid være i form af nøgleværdipar.
- JSON Data er adskilt med kommaer.
- En krøllet bøjle bruges til at repræsentere JSON Object.
- 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:
- https: // github.com / nlohmann / json
- 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 ++:
- Eksempel 1: Analyse JSON i C++
- Eksempel 2: Analyse og serialisering af JSON i C++
- Eksempel 3: Analyse JSON 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
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.