Com analitzar JSON en C ++

How Parse Json C



La intenció d’aquest tutorial és entendre les dades JSON i com analitzar les dades JSON en C ++. Discutirem les dades JSON, Object, Array, sintaxi JSON i, a continuació, examinarem diversos exemples de treball per entendre el mecanisme d’anàlisi de les dades JSON en C ++.

Què és JSON?

JSON és una representació lleugera basada en text per emmagatzemar i transferir dades estructurades de manera organitzada. Les dades JSON es representen en forma de llistes ordenades i parells clau-valor. JSON significa J ava S cript O bject N otació. Com indica el nom complet, es deriva de JavaScript. Tot i això, les dades JSON són compatibles amb la majoria dels llenguatges de programació populars.







Sovint s’utilitza per transferir les dades del servidor a una pàgina web. És molt més fàcil i net representar les dades estructurades en JSON que XML.



Regla de sintaxi JSON

Aquí hi ha les regles de sintaxi JSON:



  1. Les dades JSON sempre han de tenir la forma de parells valor-clau.
  2. Les dades JSON estan separades per comes.
  3. S’utilitza una claus Curly per representar l’objecte JSON.
  4. S’utilitza un claudàtor per representar una matriu JSON.

Què són les dades JSON?

Les dades JSON es representen en forma de parells clau-valor. Això és similar a un diccionari o hash en altres llenguatges de programació.





Nom: Drake

Aquest és un exemple de dades JSON simples. La clau aquí és Nom i Drake és el valor corresponent. La clau, és a dir, el nom i el valor, és a dir, Drake, estan separats per dos punts.



Extensió de fitxer JSON

Normalment, les dades JSON s’emmagatzemen al fitxer amb l’extensió de .json. Per exemple, per emmagatzemar les dades de l’empleat, només podeu anomenar el fitxer com a ‘empleat.json’. Aquest seria un simple fitxer de text. A continuació, podeu obrir aquest fitxer JSON a qualsevol dels vostres editors de text preferits.

Objecte JSON

L'objecte JSON no és res més que les dades JSON incloses dins de les claus. Aquí teniu un exemple d'objecte JSON:

{
Nom:Drake,
Identificació del treballador:23547a,
Telèfon: 23547,
Departament:Finances
}

Un objecte JSON pot contenir diverses dades JSON. Cada dada JSON està separada per una coma. Les dades JSON es representen com a parells valor-clau. La clau, és a dir, el nom i el valor, és a dir, Drake, estan separats per dos punts. A l'exemple anterior, hi ha quatre parells valor-clau. La primera clau és Nom; Drake és el seu valor corresponent. De la mateixa manera, EmployeeID, Phone i Department són les altres tres claus.

Matriu JSON

Una matriu JSON pot contenir diversos objectes JSON separats per comes. La matriu JSON està inclosa en un claudàtor. Vegem un exemple d'una matriu JSON:

'Estudiants':[
{'nom':'Sean', 'cognom':'Marró'},
{'nom':'Drake', 'cognom':'Williams'},
{'nom':'Tom', 'cognom':'Miller'},
{nom:Pere,cognom:Johnson}
]

Aquest és un exemple d'una matriu JSON. Aquí, Students s’inclou entre claudàtors, és a dir, matriu, i conté quatre objectes JSON. Cadascun d’aquests objectes es representa en forma de parells clau-valor i està separat per una coma.

Un fitxer JSON de mostra

Ara, ja que hem entès les dades JSON, els objectes JSON i la matriu JSON, vegem un exemple de fitxer JSON:

{
nom:siguin,
cognom:Marró,
DNI d’estudiant: 21453,
Departament:Informàtica Sc.,
Temes:[Matemàtiques,Phy,Chem]
}

Anàlisi de biblioteques en C ++:

No hi ha cap solució nativa per analitzar dades JSON a C ++. Tot i això, hi ha diverses biblioteques per analitzar dades JSON a C ++. En aquest article, analitzarem les dues biblioteques més populars per analitzar les dades JSON a C ++. Aquests són els enllaços de GitHub per analitzar dades JSON:

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

És possible que vulgueu descarregar aquestes biblioteques per poder executar els exemples que es mostren a continuació.

Exemples

Ara tenim una comprensió bàsica de les dades JSON, objectes, matrius i biblioteques d’anàlisi disponibles. Vegem ara un parell d'exemples per analitzar dades JSON en C ++:

  • Exemple-1: analitzeu JSON a C ++
  • Exemple-2: analitzar i serialitzar JSON en C ++
  • Exemple-3: analitzeu JSON a C ++

Per a l'exemple 1 i l'exemple 2, farem ús de la biblioteca nlohmann. En el cas de l'Exemple-3, utilitzarem la biblioteca RapidJSON.

Exemple-1: analitzeu JSON a C ++

En aquest programa d’exemple, demostrarem com accedir als valors de les dades JSON en C ++.

#incloure
#include 'json.hpp'

utilitzant json=nlohmann::json;

intprincipal()
{

// jdEmployees
json jdEmpleats=
{
{'nom','Sean'},
{'cognom','Marró'},
{'StudentID',21453},
{'Departament','Computer Sc'.}
};

// Accediu als valors
hores::cordafNom=jdEmpleats.valor('nom', 'oops');
hores::cordalNom=jdEmpleats.valor('cognom', 'oops');
intsID=jdEmpleats.valor('StudentID', 0);
hores::cordadepartament=jdEmpleats.valor('Departament', 'oops');

// Imprimiu els valors
hores::cost << 'Nom: ' <<fNom<<hores::endl;
hores::cost << 'Cognom: ' <<lNom<<hores::endl;
hores::cost << 'Identificador d'estudiant:' <<sID<<hores::endl;
hores::cost << 'Departament:' <<departament<<hores::endl;

tornar 0;
}

Exemple-2: analitzar i serialitzar JSON en C ++

En aquest programa d’exemple, veurem com analitzar i serialitzar JSON en C ++. Estem utilitzant json :: parse () per analitzar les dades JSON.

#incloure
#include 'json.hpp'
#incloure

utilitzant json=nlohmann::json;

intprincipal()
{
// Aquí teniu un text JSON
chartext[] =R'(
{
'
Llibre': {
'
Amplada': 450,
'
Alçada': 30,
'
Títol':'Hola món',
'
isBiografia': fals,
'
NumOfCopies': 4,
'
ID de biblioteca': [2319, 1406, 3854, 987]
}
}
) '
;

// Analitzem i serialitzem JSON
json j_completa=json::analitzar(text);
hores::cost <<hores::setw(4) <<j_completa<<hores::endl;
}

Exemple-3: analitzeu JSON a C ++

Ara, demostrarem com analitzar la cadena JSON mitjançant la biblioteca RapidJSON. RapidJSON es va inspirar originalment en el RapidXML. En aquest programa d'exemple, estem analitzant una cadena JSON a DOM. Hem declarat mydoc de tipus Document i després hem utilitzat el mètode mydoc.parse () per analitzar la cadena JSON.

#incloure
#include 'rapidjson / writer.h'
#include 'rapidjson / document.h'
#include 'rapidjson / stringbuffer.h'

utilitzant l'espai de noms rapidjson;

intprincipal()
{

const char*json= '{'nom':'siguin','cognom':'Marró','empId': 21453,
'
departament':'Informàtica Sc.'}';

// Analitzeu la cadena JSON a DOM
Document mydoc;
mydoc.Parse(json);

// DOM a cadena
Búfer StringBuffer;
Escriptor<StringBuffer>escriptor(memòria intermèdia);

mydoc.Accepta(escriptor);

// Imprimiu la sortida
hores::cost <<memòria intermèdia.GetString() <<hores::endl;

tornar 0;
}

Conclusió

En aquest article, hem debatut breument JSON dades, objecte, matriu i sintaxi. Com sabem, no hi ha cap solució nativa per a l'anàlisi de dades JSON a C ++; hem utilitzat dues biblioteques diferents per analitzar dades JSON en C ++. Vam examinar tres exemples diferents per demostrar el mecanisme d’anàlisi de dades JSON a C ++. En comparació amb la biblioteca nlohmann, el RapidJSON és petit, ràpid i amb memòria fàcil.