C ++

Cum se analizează JSON în C ++

Cum se analizează JSON în C ++
Intenția acestui tutorial este să înțelegeți datele JSON și cum să analizați datele JSON în C++. Vom discuta datele JSON, Object, Array, sintaxa JSON și apoi vom parcurge câteva exemple de lucru pentru a înțelege mecanismul de analiză a datelor JSON în C++.

Ce este JSON?

JSON este o reprezentare ușoară bazată pe text pentru stocarea și transferul de date structurate într-un mod organizat. Datele JSON sunt reprezentate sub formă de liste ordonate și perechi cheie-valoare. JSON înseamnă JavaScript Object Notatie. După cum indică numele complet, este derivat din JavaScript. Cu toate acestea, datele JSON sunt acceptate în majoritatea limbajelor de programare populare.

Este adesea folosit pentru a transfera datele de pe server pe o pagină web. Este mult mai ușor și mai simplu să reprezentați datele structurate în JSON decât XML.

Regula de sintaxă JSON

Iată regulile de sintaxă JSON:

  1. Datele JSON ar trebui să fie întotdeauna sub formă de perechi cheie-valoare.
  2. Datele JSON sunt separate prin virgule.
  3. Pentru a reprezenta obiectul JSON se utilizează o acoladă.
  4. O paranteză pătrată este utilizată pentru a reprezenta o matrice JSON.

Ce este JSON Data?

Datele JSON sunt reprezentate sub formă de perechi cheie-valoare. Acest lucru este similar cu un dicționar sau hash din alte limbaje de programare.

„Nume”: „Drake”

Acesta este un exemplu de date JSON simple. Cheia aici este „Nume” și „Drake” este valoarea corespunzătoare. Cheia, i.e., „Nume” și valoarea, i.e., „Drake” sunt separați prin două puncte.

Extensie de fișier JSON

Datele JSON sunt stocate în mod normal în fișierul cu extensia „.json ”. De exemplu, pentru a stoca datele angajatului, puteți pur și simplu denumi fișierul drept „angajat”.json '. Acesta ar fi un fișier text simplu. Apoi puteți deschide acest fișier JSON în oricare dintre editorele dvs. de text preferate.

Obiect JSON

Obiectul JSON nu este altceva decât datele JSON cuprinse în acoladele. Iată un exemplu de obiect JSON:


„Nume”: „Drake”,
„ID-ul angajatului”: „23547a”,
„Telefon”: „23547”,
„Departament”: „Finanțe”

Un obiect JSON poate conține mai multe date JSON. Fiecare dată JSON este separată printr-o virgulă. Datele JSON sunt reprezentate ca perechi cheie-valoare. Cheia, i.e., „Nume” și valoarea, i.e., „Drake” sunt separați prin două puncte. În exemplul de mai sus, există patru perechi cheie-valoare. Prima cheie este „Nume”; „Drake” este valoarea corespunzătoare pentru aceasta. În mod similar, „EmployeeID”, „Phone” și „Department” sunt celelalte trei chei.

Matrice JSON

O matrice JSON poate conține mai multe obiecte JSON separate prin virgule. Matricea JSON este inclusă într-o paranteză pătrată. Să vedem un exemplu de matrice JSON:

"Elevi":[
"firstName": "Sean", "lastName": "Brown",
"firstName": "Drake", "lastName": "Williams",
"firstName": "Tom", "lastName": "Miller",
„FirstName”: „Peter”, „lastName”: „Johnson”
]

Acesta este un exemplu de matrice JSON. Aici, „Studenții” este inclus cu o paranteză pătrată, i.e., și conține patru obiecte JSON. Fiecare dintre aceste obiecte este reprezentat sub formă de perechi cheie-valoare și este separat printr-o virgulă.

Un exemplu de fișier JSON

Acum, din moment ce am înțeles datele JSON, obiectele JSON, matricea JSON, să ne uităm la un exemplu de fișier JSON:


„Prenume”: „Sean”,
„LastName”: „Brown”,
„ID-ul studentului”: 21453,
„Departament”: „Computer Sc.”,
„Subiecți”: [„Matematică”, „Phy”, „Chem”]

Analizarea bibliotecilor în C ++:

Nu există nicio soluție nativă pentru analiza datelor JSON în C++. Cu toate acestea, există mai multe biblioteci pentru a analiza datele JSON în C++. În acest articol, vom analiza cele mai populare două biblioteci pentru a analiza datele JSON în C++. Iată linkurile GitHub pentru analizarea datelor JSON:

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

Poate doriți să descărcați aceste biblioteci pentru a putea executa exemplele prezentate mai jos.

Exemple

Acum, avem o înțelegere de bază a datelor JSON, a obiectelor, a matricilor și a bibliotecilor de analiză disponibile. Să vedem acum câteva exemple pentru a analiza datele JSON în C ++:

Pentru Exemplul-1 și Exemplul-2, vom folosi biblioteca „nlohmann”. În cazul Exemplului-3, vom folosi biblioteca „RapidJSON”.

Exemplu-1: Analizați JSON în C++

În acest exemplu de program, vom demonstra cum se accesează valorile datelor JSON în C++.

#include
#include "json.hpp "
folosind json = nlohmann :: json;
int main ()

// jdEmployees
json jdEmployees =

"firstName", "Sean",
"lastName", "Brown",
"StudentID", 21453,
"Departament", "Computer Sc."
;
// Accesați valorile
std :: string fName = jdEmployees.value ("prenume", "hopa");
std :: string lName = jdEmployees.value ("prenumele", "oops");
int sID = jdEmployees.valoare ("StudentID", 0);
std :: string dept = jdEmployees.valoare („Departament”, „oops”);
// Imprimați valorile
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;

Exemplul-2: Analizați și serializați JSON în C++

În acest exemplu de program, vom vedea cum să analizăm și să serializăm JSON în C++. Folosim „json :: parse ()” pentru a analiza datele JSON.

#include
#include "json.hpp "
#include
folosind json = nlohmann :: json;
int main ()

// Iată un text JSON
textul char [] = R "(

"Carte":
„Lățime”: 450,
„Înălțime”: 30,
„Title”: „Hello World”,
„isBiography”: fals,
„NumOfCopies”: 4,
„ID-uri bibliotecă”: [2319, 1406, 3854, 987]


) ";
// Să analizăm și să serializăm JSON
json j_complete = json :: parse (text);
std :: cout << std::setw(4) << j_complete << std::endl;

Exemplu-3: Analizați JSON în C++

Acum, vom demonstra cum să analizăm șirul JSON folosind biblioteca RapidJSON. RapidJSON a fost inițial inspirat de RapidXML. În acest exemplu de program, analizăm un șir JSON în DOM. Am declarat „mydoc” de tip „Document” și apoi am folosit „mydoc.metoda parse () ”pentru a analiza șirul JSON.

#include
#include "rapidjson / writer.h "
#include "rapidjson / document.h "
#include "rapidjson / stringbuffer.h "
utilizarea spațiului de nume rapidjson;
int main ()

const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
"departament": "Computer Sc."";
// Analizați șirul JSON în DOM
Documentează mydoc;
mydoc.Parse (json);
// DOM la șir
StringBuffer tampon;
Scriitor scriitor (tampon);
mydoc.Acceptă (scriitor);
// Imprimați rezultatul
std :: cout << buffer.GetString() << std::endl;
retur 0;

Concluzie

În acest articol, am discutat pe scurt datele, obiectul, matricea și sintaxa JSON. După cum știm, nu există nicio soluție nativă pentru analiza datelor JSON în C ++; am folosit două biblioteci diferite pentru a analiza datele JSON în C++. Am analizat trei exemple diferite pentru a demonstra mecanismul de analiză a datelor JSON în C++. În comparație cu biblioteca „nlohmann”, RapidJSON este mic, rapid și ușor de memorat.

How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...
How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...