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:
- A JSON adatoknak mindig kulcs-érték párok formájában kell lenniük.
- A JSON adatok vesszővel vannak elválasztva.
- A JSON Object ábrázolásához göndör zárójelet használunk.
- 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:
- https: // github.com / nlohmann / json
- 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:
- 1. példa: JSON elemzése a C-ben++
- 2. példa: A JSON elemzése és sorosítása a C-ben++
- 3. példa: JSON elemzése a C-ben++
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ó
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.