Cum se analizează JSON în C ++

How Parse Json 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ă J ava S cript SAU bject N otatie. 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 curat să reprezentăm 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 folosește 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 Name și Drake este valoarea corespunzătoare. Cheia, adică, numele și valoarea, adică Drake sunt separate de 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 ca „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,
card de identitate al angajatului:23547a,
Telefon: 23547,
Departament:Finanţa
}

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, adică, numele și valoarea, adică Drake sunt separate de 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':[
{'Nume':„Sean”, 'nume':'Maro'},
{'Nume':„Drake”, 'nume':„Williams”},
{'Nume':„Tom”, 'nume':„Miller”},
{Nume:Petru,nume:Johnson}
]

Acesta este un exemplu de matrice JSON. Aici, Studenții sunt încadrați cu o paranteză pătrată, adică matrice ș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, deoarece am înțeles datele JSON, obiectele JSON, matricea JSON, să vedem un exemplu de fișier JSON:

{
Nume:Sean,
nume:Maro,
Carnet de student: 21453,
Departament:Computer Sc.,
Subiecte:[Matematica,Phy,Chem]
}

Analizarea bibliotecilor în C ++:

Nu există nicio soluție nativă pentru analizarea 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 matricelor și a bibliotecilor de analiză disponibile. Să vedem acum câteva exemple pentru a analiza datele JSON în C ++:

  • Exemplu-1: Analizați JSON în C ++
  • Exemplul-2: Analizați și serializați JSON în C ++
  • Exemplu-3: Analizați 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;

intprincipal()
{

// jdEmployees
json jd Angajați=
{
{'Nume',„Sean”},
{'nume','Maro'},
{'Carnet de student',21453},
{'Departament',„Computer Sc.”}
};

// Accesați valorile
ore::şirfNume=jdAngajați.valoare('Nume', „oops”);
ore::şirlNume=jdAngajați.valoare('nume', „oops”);
intsID=jdAngajați.valoare('Carnet de student', 0);
ore::şirdepartament=jdAngajați.valoare('Departament', „oops”);

// Imprimați valorile
ore::cost << 'Nume: ' <<fNume<<ore::endl;
ore::cost << 'Nume: ' <<lNume<<ore::endl;
ore::cost << 'Carnet de student: ' <<sID<<ore::endl;
ore::cost << „Departament:” <<departament<<ore::endl;

întoarcere 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;

intprincipal()
{
// Iată un text JSON
chartext[] =R'(
{
'
Carte': {
'
Lăţime': 450,
'
Înălţime': 30,
'
Titlu':'Salut Lume',
'
esteBiografie': fals,
'
NumOfCopies': 4,
'
ID-uri de bibliotecă': [2319, 1406, 3854, 987]
}
}
) '
;

// Să analizăm și să serializăm JSON
json j_complete=json::analiza(text);
ore::cost <<ore::setw(4) <<j_complet<<ore::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 folosim metoda mydoc.parse () pentru a analiza șirul JSON.

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

folosind namespace rapidjson;

intprincipal()
{

const char*json= „{”Nume':'Sean','nume':'Maro','empId': 21453,
'
departament':'Computer Sc.'}';

// Analizați șirul JSON în DOM
Documentează mydoc;
mydoc.Analiza(json);

// DOM la șir
StringBuffer buffer;
Scriitor<StringBuffer>scriitor(tampon);

mydoc.Accept(scriitor);

// Imprimați rezultatul
ore::cost <<tampon.GetString() <<ore::endl;

întoarcere 0;
}

Concluzie

În acest articol, am discutat pe scurt JSON date, obiect, matrice și sintaxă. 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.