C++

Hoe JSON te ontleden in C++

Hoe JSON te ontleden in C++
De bedoeling van deze tutorial is om de JSON-gegevens te begrijpen en hoe JSON-gegevens in C . kunnen worden geparseerd++. We zullen JSON-gegevens, Object, Array, JSON-syntaxis bespreken en vervolgens verschillende werkvoorbeelden doornemen om het parseermechanisme van JSON-gegevens in C te begrijpen++.

Wat is JSON?

JSON is een lichtgewicht, op tekst gebaseerde weergave voor het op een georganiseerde manier opslaan en overbrengen van gestructureerde gegevens structured. De JSON-gegevens worden weergegeven in de vorm van geordende lijsten en sleutel-waardeparen. JSON staat voor JavaScript Object neeotatie. Zoals de volledige naam aangeeft, is het afgeleid van JavaScript. JSON-gegevens worden echter ondersteund in de meeste populaire programmeertalen.

Het wordt vaak gebruikt om de gegevens van de server naar een webpagina over te brengen. Het is veel gemakkelijker en schoner om de gestructureerde gegevens in JSON weer te geven dan XML.

JSON-syntaxisregel

Dit zijn de JSON-syntaxisregels:

  1. JSON-gegevens moeten altijd de vorm hebben van sleutel-waardeparen.
  2. JSON-gegevens worden gescheiden door komma's.
  3. Een accolade wordt gebruikt om het JSON-object weer te geven.
  4. Een vierkante haak wordt gebruikt om een ​​JSON-array weer te geven.

Wat zijn JSON-gegevens??

De JSON-gegevens worden weergegeven in de vorm van sleutel-waardeparen. Dit is vergelijkbaar met een woordenboek of hash in andere programmeertalen.

"Naam" : "Drak"

Dit is een voorbeeld van eenvoudige JSON-gegevens. De sleutel hier is "Naam" en "Drake" is de bijbehorende waarde. De sleutel, ik.e., “Naam” en de waarde, i.e., "Drak" worden gescheiden door een dubbele punt.

JSON-bestandsextensie

De JSON-gegevens worden normaal gesproken opgeslagen in het bestand met de extensie ".json”. Om bijvoorbeeld de gegevens van de werknemer op te slaan, kunt u het bestand eenvoudigweg 'employee' noemen.json'. Dit zou een eenvoudig tekstbestand zijn. U kunt dit JSON-bestand vervolgens openen in een van uw favoriete teksteditors.

JSON-object

Het JSON-object is niets anders dan de JSON-gegevens tussen de accolades. Hier is een voorbeeld van een JSON-object:


"Naam": "Drak",
"Werknemer-ID": "23547a",
“Telefoon”: “23547”,
“Afdeling”: “Financiën”

Een JSON-object kan meerdere JSON-gegevens bevatten. Elke JSON-gegevens worden gescheiden door een komma. JSON-gegevens worden weergegeven als sleutel-waardeparen. De sleutel, ik.e., “Naam” en de waarde, i.e., "Drak" worden gescheiden door een dubbele punt. In het bovenstaande voorbeeld zijn er vier sleutel-waardeparen. De eerste sleutel is "Naam"; "Drake" is de corresponderende waarde ervoor. Evenzo zijn "Werknemers-ID", "Telefoon" en "Afdeling" de andere drie sleutels.

JSON-array

Een JSON-array kan meerdere door komma's gescheiden JSON-objecten bevatten. De JSON-array staat tussen vierkante haakjes. Laten we eens kijken naar een voorbeeld van een JSON-array:

"Studenten":[
"firstName":"Sean", "lastName":"Bruin",
"firstName":"Drake", "lastName":"Williams",
"firstName":"Tom", "lastName":"Miller",
“voornaam”:”Peter”, “achternaam”: “Johnson”
]

Dit is een voorbeeld van een JSON-array. Hier staat "Studenten" tussen een vierkante haak, i.e., array, en het bevat vier JSON-objecten. Elk van deze objecten wordt weergegeven in de vorm van sleutel-waardeparen en wordt gescheiden door een komma.

Een voorbeeld-JSON-bestand

Nu we JSON-gegevens, JSON-objecten en JSON-array begrepen, gaan we eens kijken naar een voorbeeld van een JSON-bestand:


“voornaam”: “Sean”,
“achternaam”: “Bruin”,
"Student-ID": 21453,
“Afdeling”: “Computer Sc.”,
"Onderwerpen": ["Wiskunde", "Phy", "Chem"]

Bibliotheken ontleden in C++:

Er is geen native oplossing voor het ontleden van JSON-gegevens in C++. Er zijn echter verschillende bibliotheken om JSON-gegevens in C . te ontleden++. In dit artikel gaan we kijken naar de twee populairste bibliotheken om JSON-gegevens in C . te ontleden++. Hier zijn de GitHub-links voor het parseren van JSON-gegevens:

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

Misschien wilt u deze bibliotheken downloaden om de onderstaande voorbeelden uit te voeren.

Voorbeelden

Nu hebben we een basiskennis van JSON-gegevens, objecten, arrays en beschikbare parseerbibliotheken. Laten we nu een paar voorbeelden bekijken om JSON-gegevens in C++ te ontleden:

Voor Voorbeeld-1 en Voorbeeld-2 gaan we gebruik maken van de “nlohmann”-bibliotheek. In het geval van Voorbeeld-3 gebruiken we de bibliotheek "RapidJSON".

Voorbeeld-1: JSON ontleden in C++

In dit voorbeeldprogramma laten we zien hoe u toegang krijgt tot waarden van JSON-gegevens in C++.

#include
#include "json.hpp"
met json = nlohmann::json;
int hoofd()

// jdMedewerkers
json jdWerknemers =

"firstName","Sean",
"achternaam","Bruin",
"Student-ID",21453,
"Afdeling","Computer Sc."
;
// Toegang tot de waarden
std::string fName = jdEmployees.value("voornaam", "oeps");
std::string lName = jdEmployees.value("achternaam", "oeps");
int sID = jdEmployees.waarde("Student-ID", 0);
std::string dept = jdEmployees.value("Afdeling", "oeps");
// Druk de waarden af
standaard::cout << "First Name: " << fName << std::endl;
standaard::cout << "Last Name: " << lName << std::endl;
standaard::cout << "Student ID: " << sID << std::endl;
standaard::cout << "Department: " << dept << std::endl;
retourneer 0;

Voorbeeld-2: ontleden en serialiseren JSON in C++

In dit voorbeeldprogramma gaan we zien hoe we JSON kunnen ontleden en serialiseren in C and++. We gebruiken "json::parse()" om de JSON-gegevens te ontleden.

#include
#include "json.hpp"
#include
met json = nlohmann::json;
int hoofd()

// Hier is een JSON-tekst
char tekst [] = R"(

"Boek":
"Breedte": 450,
"Hoogte": 30,
"Titel": "Hallo wereld",
"isBiography": false,
"Aantal Kopieën": 4,
"Bibliotheek-ID's": [2319, 1406, 3854, 987]


)";
// Laten we JSON ontleden en serialiseren
json j_complete = json::parse(tekst);
standaard::cout << std::setw(4) << j_complete << std::endl;

Voorbeeld-3: JSON ontleden in C++

Nu zullen we laten zien hoe JSON-tekenreeksen kunnen worden geparseerd met behulp van de RapidJSON-bibliotheek. RapidJSON is oorspronkelijk geïnspireerd op de RapidXML. In dit voorbeeldprogramma ontleden we een JSON-tekenreeks in DOM. We hebben “mydoc” van het type “Document” gedeclareerd en gebruiken vervolgens de “mydoc.parse()” methode om de JSON-string te ontleden.

#include
#include "rapidjson/schrijver.he"
#include "rapidjson/document.he"
#include "rapidjson/stringbuffer.he"
met behulp van naamruimte rapidjson;
int hoofd()

const char* json = ""firstName":"Sean","lastName":"Bruin","empId":21453,
"department":"Computer Sc."";
// Parseer de JSON-tekenreeks in DOM
Mijn document documenteren;
mijndoc.Ontleden(json);
// DOM naar string
StringBuffer-buffer;
auteur schrijver(buffer);
mijndoc.Accepteren(schrijver);
// Print de uitvoer
standaard::cout << buffer.GetString() << std::endl;
retourneer 0;

Conclusie

In dit artikel hebben we kort JSON-gegevens, object, array en syntaxis besproken. Zoals we weten, is er geen native oplossing voor het ontleden van JSON-gegevens in C++; we hebben twee verschillende bibliotheken gebruikt om JSON-gegevens in C . te ontleden++. We hebben drie verschillende voorbeelden onderzocht om het JSON-gegevensparseermechanisme in C . te demonstreren++. In vergelijking met de "nlohmann" -bibliotheek is de RapidJSON klein, snel en geheugenvriendelijk.

OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...
Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...
Hoe een spel op Linux te ontwikkelen
Tien jaar geleden zouden niet veel Linux-gebruikers voorspellen dat hun favoriete besturingssysteem ooit een populair spelplatform voor commerciële vi...