Hva er JSON?
JSON er en lett tekstbasert representasjon for lagring og overføring av strukturerte data på en organisert måte. JSON-dataene er representert i form av ordnede lister og nøkkelverdipar. JSON står for JavaSkrypt Object Notasjon. Som det fulle navnet indikerer, er det hentet fra JavaScript. Imidlertid støttes JSON-data på de fleste av de populære programmeringsspråkene.
Det brukes ofte til å overføre data fra serveren til en webside. Det er mye enklere og renere å representere de strukturerte dataene i JSON enn XML.
JSON syntaksregel
Her er JSONs syntaksregler:
- JSON Data skal alltid være i form av nøkkelverdipar.
- JSON Data skilles med komma.
- En krøllete brace brukes til å representere JSON Object.
- En firkantet parentes brukes til å representere en JSON Array.
Hva er JSON Data?
JSON-dataene er representert i form av nøkkelverdipar. Dette ligner på en ordbok eller hasj på andre programmeringsspråk.
“Navn”: ”Drake”
Dette er et eksempel på enkle JSON-data. Nøkkelen her er "Navn" og "Drake" er den tilsvarende verdien. Nøkkelen, jeg.e., “Navn” og verdien, i.e., "Drake" er atskilt med et kolon.
JSON Filutvidelse
JSON-dataene lagres normalt i filen med utvidelsen “.json ”. For eksempel, for å lagre den ansattes data, kan du bare navngi filen som 'ansatt.json '. Dette ville være en enkel tekstfil. Du kan deretter åpne denne JSON-filen i en hvilken som helst favoritt tekstredigerer.
JSON Objekt
JSON-objektet er ingenting annet enn JSON-dataene som er lukket i krøllete bukseseler. Her er et eksempel på et JSON-objekt:
“Navn”: ”Drake”,
“Medarbeider-ID”: “23547a”,
“Telefon”: “23547”,
“Avdeling”: “Økonomi”
Et JSON-objekt kan inneholde flere JSON-data. Hver JSON-data er atskilt med komma. JSON-data er representert som nøkkelverdipar. Nøkkelen, jeg.e., “Navn” og verdien, i.e., "Drake" er atskilt med et kolon. I eksemplet ovenfor er det fire nøkkelverdipar. Den første nøkkelen er "Navn"; "Drake" er den tilsvarende verdien for den. Tilsvarende er “EmployeeID”, “Phone” og “Department” de tre andre tastene.
JSON Array
En JSON-matrise kan inneholde flere kommaseparerte JSON-objekter. JSON-matrisen er lukket i en firkantet parentes. La oss se på et eksempel på et JSON-utvalg:
"Studenter": ["firstName": "Sean", "lastName": "Brown",
"firstName": "Drake", "lastName": "Williams",
"firstName": "Tom", "lastName": "Miller",
“FirstName”: ”Peter”, “lastName”: “Johnson”
]
Dette er et eksempel på en JSON-matrise. Her er "Studenter" vedlagt en firkantet parentes, i.e., array, og den inneholder fire JSON-objekter. Hver av disse objektene er representert i form av nøkkelverdipar og er atskilt med komma.
En prøve JSON-fil
Nå, siden vi forsto JSON-data, JSON-objekter, JSON-array, la oss se på et eksempel på en JSON-fil:
“FirstName”: “Sean”,
“Etternavn”: “brun”,
“Student-ID”: 21453,
“Avdeling”: “Computer Sc.”,
"Emner": ["Matematikk", "Phy", "Chem"]
Parsing Biblioteker i C ++:
Det er ingen opprinnelig løsning for analyse av JSON-data i C++. Imidlertid er det flere biblioteker for å analysere JSON-data i C++. I denne artikkelen skal vi se på de to mest populære bibliotekene for å analysere JSON-data i C++. Her er GitHub-koblingene for analyse av JSON-data:
- https: // github.com / nlohmann / json
- https: // github.com / Tencent / rapidjson /
Det kan være lurt å laste ned disse bibliotekene for å kunne utføre eksemplene vist nedenfor.
Eksempler
Nå har vi en grunnleggende forståelse av JSON-data, objekter, matriser og tilgjengelige analyseringsbiblioteker. La oss nå se på et par eksempler for å analysere JSON-data i C ++:
- Eksempel 1: Analyse JSON i C++
- Eksempel 2: Analyse og serialisering av JSON i C++
- Eksempel 3: Analyse JSON i C++
For eksempel 1 og eksempel 2 skal vi bruke biblioteket “nlohmann”. I tilfelle eksempel 3 vil vi bruke biblioteket “RapidJSON”.
Eksempel 1: Analyse JSON i C++
I dette eksempelprogrammet vil vi demonstrere hvordan du får tilgang til verdier av JSON-data i C++.
#inkludere# inkluderer "json.hpp "
bruker json = nlohmann :: json;
int main ()
// jdMedarbeidere
json jdMedarbeidere =
"fornavn", "Sean",
"etternavn", "brun",
"StudentID", 21453,
"Avdeling", "Computer Sc."
;
// Få tilgang til verdiene
std :: streng fName = jdMedarbeidere.verdi ("fornavn", "oops");
std :: streng lName = jdMedarbeidere.verdi ("etternavn", "oops");
int sID = jdMedarbeidere.verdi ("StudentID", 0);
std :: streng dept = jdMedarbeidere.verdi ("Avdeling", "oops");
// Skriv ut verdiene
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;
retur 0;
Eksempel 2: Analyse og serialisering av JSON i C++
I dette eksempelprogrammet skal vi se hvordan man analyserer og serialiserer JSON i C++. Vi bruker “json :: parse ()” for å analysere JSON-dataene.
#inkludere# inkluderer "json.hpp "
#inkludere
bruker json = nlohmann :: json;
int main ()
// Her er en JSON-tekst
char tekst [] = R "(
"Bok":
"Bredde": 450,
"Høyde": 30,
"Tittel": "Hello World",
"isBiography": falsk,
"NumOfCopies": 4,
"LibraryIDs": [2319, 1406, 3854, 987]
) ";
// La oss 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++
Nå skal vi demonstrere hvordan du analyserer JSON-strenger ved hjelp av RapidJSON-biblioteket. RapidJSON ble opprinnelig inspirert av RapidXML. I dette eksempelprogrammet analyserer vi en JSON-streng i DOM. Vi har erklært “mydoc” av typen “Document” og deretter bruker “mydoc.parse () ”-metode for å analysere JSON-strengen.
#inkludere# inkluderer "rapidjson / skribent.h "
#include "rapidjson / document.h "
#include "rapidjson / stringbuffer.h "
bruker navneområdet rapidjson;
int main ()
const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
"department": "Computer Sc."";
// Analiser JSON-strengen i DOM
Dokument mydoc;
mydoc.Parse (json);
// DOM til streng
StringBuffer buffer;
Forfatter
mydoc.Godta (forfatter);
// Skriv ut utdata
std :: cout << buffer.GetString() << std::endl;
retur 0;
Konklusjon
I denne artikkelen har vi kort diskutert JSON-data, objekt, array og syntaks. Som vi vet er det ingen innfødt løsning for JSON-dataparsering i C ++; Vi har brukt to forskjellige biblioteker for å analysere JSON-data i C++. Vi så på tre forskjellige eksempler for å demonstrere JSON-dataparseringsmekanismen i C++. Sammenlignet med "nlohmann" -biblioteket er RapidJSON liten, rask og minnevennlig.