C ++

A JSON elemzése a C ++ nyelven

A JSON elemzése a C ++ nyelven
A bemutató célja a JSON-adatok megértése és a JSON-adatok C-ben történő elemzése++. Megbeszéljük a JSON-adatokat, az objektumot, a tömböt, a JSON-szintaxist, majd számos működő példán keresztül áttekintjük a JSON-adatok elemzési mechanizmusát a C++.

Mi a JSON?

A JSON könnyű, szöveges megjelenítés a strukturált adatok szervezett tárolásához és továbbításához. A JSON-adatok rendezett listák és kulcs-érték párok formájában vannak ábrázolva. A JSON jelentése JavaSszkript Otárgy Notáció. Amint a teljes név jelzi, a JavaScript-ből származik. A JSON-adatokat azonban a legnépszerűbb programozási nyelvek támogatják.

Gyakran használják az adatok átvitelére a szerverről egy weboldalra. Sokkal könnyebb és tisztább a strukturált adatokat ábrázolni a JSON-ban, mint az XML-ben.

JSON szintaxis szabály

Íme a JSON szintaxis szabálya:

  1. A JSON adatoknak mindig kulcs-érték párok formájában kell lenniük.
  2. A JSON adatok vesszővel vannak elválasztva.
  3. A JSON Object ábrázolásához göndör zárójelet használunk.
  4. Szögletes zárójelet használunk a JSON tömb ábrázolására.

Mi a JSON Data?

A JSON-adatok kulcs-érték párok formájában vannak ábrázolva. Ez hasonló egy más programozási nyelvű szótárhoz vagy hashhoz.

„Név”: „Drake”

Ez az egyszerű JSON-adatok példája. A kulcs itt a „Név”, a „Drake” pedig a megfelelő érték. A kulcs, i.e., A „név” és az érték, azaz.e., A „Drake” -t kettőspont választja el.

JSON fájlkiterjesztés

A JSON-adatokat általában a fájl kiterjesztése „.json ”. Például az alkalmazott adatainak tárolásához egyszerűen megnevezheti a fájlt "alkalmazottnak".json '. Ez egy egyszerű szöveges fájl lenne. Ezután megnyithatja ezt a JSON fájlt bármelyik kedvenc szövegszerkesztőben.

JSON Object

A JSON objektum nem más, mint a göndör zárójelek közé zárt JSON adatok. Itt van egy minta JSON objektum:


„Név”: „Drake”,
„Alkalmazotti azonosító”: „23547a”,
„Telefon”: „23547”,
„Osztály”: „Pénzügy”

Egy JSON objektum több JSON adatot is tartalmazhat. Minden JSON adatot vessző választ el. A JSON-adatok kulcs-érték párokként vannak ábrázolva. A kulcs, i.e., A „név” és az érték, azaz.e., A „Drake” -t kettőspont választja el. A fenti példában négy kulcs-érték pár van. Az első kulcs a „Név”; A „Drake” a megfelelő érték. Hasonlóképpen az „EmployeeID”, a „Phone” és a „Department” a másik három kulcs.

JSON tömb

A JSON tömb több vesszővel elválasztott JSON objektumot tartalmazhat. A JSON tömb szögletes zárójelbe van zárva. Nézzünk meg egy példát egy JSON tömbre:

"Diákok": [
"keresztnév": "Sean", "vezetéknév": "Barna",
"keresztnév": "Drake", "vezetéknév": "Williams",
"keresztnév": "Tom", "vezetéknév": "Miller",
„Keresztnév”: „Peter”, „vezetéknév”: „Johnson”
]

Ez egy példa egy JSON tömbre. Itt a „diákok” szögletes zárójelben vannak, azaz.e., tömb, és négy JSON objektumot tartalmaz. Ezen objektumok mindegyike kulcs-érték párok formájában van ábrázolva, és vesszővel elválasztva.

JSON fájlminta

Most, hogy megértettük a JSON adatokat, a JSON objektumokat, a JSON tömböt, nézzünk meg egy példát egy JSON fájlra:


„Keresztnév”: „Sean”,
„Vezetéknév”: „Barna”,
„Diákigazolvány”: 21453,
„Osztály”: „Computer Sc.”,
„Tantárgyak”: [„Matematika”, „Phy”, „Chem”]

A könyvtárak elemzése C ++ nyelven:

Nincs natív megoldás a JSON-adatok elemzéséhez a C-ben++. A JSON-adatok C-ben történő elemzéséhez azonban számos könyvtár létezik++. Ebben a cikkben a két legnépszerűbb könyvtárat fogjuk megvizsgálni, hogy elemezzük a JSON-adatokat a C-ben++. A GSHub-linkek a JSON-adatok elemzéséhez:

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

Érdemes letöltenie ezeket a könyvtárakat, hogy végrehajthassa az alábbi példákat.

Példák

Most alapvető ismereteink vannak a JSON-adatokról, objektumokról, tömbökről és az elérhető elemző könyvtárakról. Most nézzünk meg néhány példát a JSON-adatok elemzésére a C ++ nyelven:

Az 1. és 2. példa esetében az „nlohmann” könyvtárat fogjuk használni. A 3. példa esetében a „RapidJSON” könyvtárat fogjuk használni.

1. példa: JSON elemzése a C-ben++

Ebben a példaprogramban bemutatjuk, hogyan lehet elérni a JSON-adatok értékeit a C-ben++.

#include
#include "json.hpp "
json = nlohmann :: json használatával;
int main ()

// jdDolgozók
json jdDolgozók =

"keresztnév", "Sean",
"vezetéknév", "barna",
"StudentID", 21453,
"Osztály", "Computer Sc."
;
// Hozzáférés az értékekhez
std :: string fName = jdEmployees.érték ("keresztnév", "hoppá");
std :: string lName = jdEmployees.érték ("vezetékNév", "hoppá");
int sID = jdDolgozók.érték ("StudentID", 0);
std :: string dept = jdDolgozók.érték ("Osztály", "hopp");
// Nyomtassa ki az értékeket
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;
visszatér 0;

2. példa: A JSON elemzése és sorosítása a C-ben++

Ebben a példaprogramban azt fogjuk látni, hogy hogyan elemezzük és sorosítsuk a JSON-t a C-ben++. A „json :: parse ()” szót használjuk a JSON-adatok elemzéséhez.

#include
#include "json.hpp "
#include
json = nlohmann :: json használatával;
int main ()

// Itt van egy JSON szöveg
char szöveg [] = R "(

"Könyv":
"Szélesség": 450,
"Magasság": 30,
"Title": "Hello World",
"isBiography": hamis,
"NumOfCopies": 4,
"LibraryIDs": [2319, 1406, 3854, 987]


) ";
// Elemezzük és sorosítsuk a JSON-t
json j_complete = json :: parse (szöveg);
std :: cout << std::setw(4) << j_complete << std::endl;

3. példa: JSON elemzése a C-ben++

Most bemutatjuk, hogyan kell elemezni a JSON karakterláncot a RapidJSON könyvtár segítségével. A RapidJSON eredetileg a RapidXML ihlette. Ebben a példaprogramban egy JSON karakterláncot elemzünk a DOM-ban. Kijelentettük, hogy „mydoc” a „Document” típusú, majd a „mydoc.parse () ”módszer a JSON karakterlánc elemzéséhez.

#include
#include "rapidjson / író.h "
#include "rapidjson / dokumentum.h "
#include "rapidjson / stringbuffer.h "
névtér használata quickjson;
int main ()

const char * json = "" keresztnév ":" Sean "," vezetéknév ":" Barna "," empId ": 21453,
"osztály": "Computer Sc."";
// A JSON karakterlánc elemzése DOM-ba
Dokumentum mydoc;
mydoc.Parse (json);
// DOM karakterláncra
StringBuffer puffer;
Író író (puffer);
mydoc.Elfogad (író);
// A kimenet kinyomtatása
std :: cout << buffer.GetString() << std::endl;
visszatér 0;

Következtetés

Ebben a cikkben röviden megvitattuk a JSON-adatokat, az objektumot, a tömböt és a szintaxist. Mint tudjuk, nincs natív megoldás a JSON-adatok elemzéséhez C ++ nyelven; két különböző könyvtárat használtunk a JSON-adatok elemzésére a C-ben++. Három különböző példát vizsgáltunk, hogy bemutassuk a JSON adatelemzési mechanizmusát C-ben++. Az „nlohmann” könyvtárhoz képest a RapidJSON kicsi, gyors és memóriabarát.

Az OSD-fedvény megjelenítése teljes képernyős Linux-alkalmazásokban és játékokban
Teljes képernyős játékok lejátszása vagy alkalmazások figyelemelterelés nélküli, teljes képernyős módban történő használata elvághatja a panelen vagy ...
Az 5 legjobb játékrögzítő kártya
Mindannyian láttuk és szerettük a YouTube-on a streaming játékokat. A PewDiePie, a Jakesepticye és a Markiplier csak néhány a legnépszerűbb játékosok ...
Hogyan lehet játékot fejleszteni Linuxon
Egy évtizeddel ezelőtt nem sok Linux-felhasználó jósolta, hogy kedvenc operációs rendszerük egy napon a videojátékok népszerű játékplatformja lesz. El...