Come analizzare JSON in C ++

Come analizzare JSON in C ++
L'intenzione di questo tutorial è comprendere i dati JSON e come analizzare i dati JSON in C++. Discuteremo di dati JSON, oggetto, array, sintassi JSON e quindi esamineremo diversi esempi di lavoro per comprendere il meccanismo di analisi dei dati JSON in C++.

Cos'è JSON?

JSON è una rappresentazione basata sul testo leggero per la memorizzazione e il trasferimento di dati strutturati in modo organizzato. I dati JSON sono rappresentati sotto forma di elenchi ordinati e coppie di valore chiave. JSON sta per JAvaSCript Object NOzione. Come indica il nome completo, deriva da JavaScript. Tuttavia, i dati JSON sono supportati nella maggior parte dei linguaggi di programmazione popolari.

Viene spesso utilizzato per trasferire i dati dal server in una pagina Web. È molto più semplice e pulito rappresentare i dati strutturati in JSON rispetto a XML.

Regola di sintassi JSON

Ecco le regole della sintassi JSON:

  1. I dati JSON dovrebbero essere sempre sotto forma di coppie di valore chiave.
  2. I dati JSON sono separati da virgole.
  3. Un tutore riccio viene utilizzato per rappresentare l'oggetto JSON.
  4. Una fascia quadrata viene utilizzata per rappresentare un array JSON.

Cosa sono i dati JSON?

I dati JSON sono rappresentati sotto forma di coppie di valore chiave. Questo è simile a un dizionario o hash in altri linguaggi di programmazione.

"Nome": "Drake"

Questo è un esempio di semplici dati JSON. La chiave qui è "Nome" e "Drake" è il valore corrispondente. La chiave, i.e., "Nome" e il valore, io.e., "Drake" sono separati da un colon.

Estensione del file JSON

I dati JSON sono normalmente archiviati nel file con l'estensione di ".JSON ". Ad esempio, per archiviare i dati del dipendente, puoi semplicemente nominare il file come "dipendente.json '. Questo sarebbe un semplice file di testo. Puoi quindi aprire questo file JSON in uno dei tuoi redattori di testo preferiti.

Oggetto json

L'oggetto JSON non è altro che i dati JSON racchiusi tra le parentesi graffe. Ecco un oggetto JSON di esempio:


"Nome": "Drake",
"ID dipendente": "23547a",
"Telefono": "23547",
"Dipartimento": "Finanza"

Un oggetto JSON può contenere più dati JSON. Ogni dati JSON è separato da una virgola. I dati JSON sono rappresentati come coppie di valore chiave. La chiave, i.e., "Nome" e il valore, io.e., "Drake" sono separati da un colon. Nell'esempio sopra, ci sono quattro coppie di valore chiave. La prima chiave è "nome"; "Drake" è il valore corrispondente per questo. Allo stesso modo, "Employeeid", "Telefono" e "Dipartimento" sono le altre tre chiavi.

JSON Array

Un array JSON può contenere diversi oggetti JSON separati da virgola. L'array JSON è racchiuso in una staffa quadrata. Diamo un'occhiata a un esempio di un array JSON:

"Studenti":[
"FirstName": "Sean", "LastName": "Brown",
"FirstName": "Drake", "LastName": "Williams",
"FirstName": "Tom", "LastName": "Miller",
"FirstName": "Peter", "LastName": "Johnson"
"

Questo è un esempio di un array JSON. Qui, "studenti" è chiuso con una staffa quadrata, io.e., Array e contiene quattro oggetti JSON. Ognuno di questi oggetti è rappresentato sotto forma di coppie di valore chiave ed è separato da una virgola.

Un file JSON di esempio

Ora, da quando abbiamo capito JSON Data, JSON Objects, JSON Array, diamo un'occhiata a un esempio di un file JSON:


"FirstName": "Sean",
"Lastname": "Brown",
"ID studente": 21453,
"Dipartimento": "Computer SC.",
"Soggetti": ["Math", "Phy", "Chem"]

Librarie di analisi in C ++:

Non esiste una soluzione nativa per l'analisi dei dati JSON in C++. Tuttavia, ci sono diverse librerie per analizzare i dati JSON in C++. In questo articolo, esamineremo le due biblioteche più popolari per analizzare i dati JSON in C++. Ecco i collegamenti GitHub per l'analisi dei dati JSON:

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

Potresti voler scaricare queste librerie per poter eseguire gli esempi mostrati di seguito.

Esempi

Ora abbiamo una comprensione di base di dati JSON, oggetti, array e librerie di analisi disponibili. Diamo ora un'occhiata a un paio di esempi per analizzare i dati JSON in C ++:

  • Esempio-1: analizza JSON in C++
  • Esempio-2: analizzare e serializzare JSON in C++
  • Esempio-3: analizza json in c++

Ad esempio-1 e Esempio-2, faremo uso della libreria "Nlohmann". Nel caso dell'esempio-3, useremo la libreria "Rapidjson".

Esempio-1: analizza JSON in C++

In questo programma di esempio, dimostreremo come accedere ai valori dei dati JSON in C++.

#includere
#include "json.HPP "
usando json = nlohmann :: json;
int main ()

// JDEMPLYEES
JSON JDEMPLYPLYEES =
"FirstName", "Sean",
"LastName", "Brown",
"StudentId", 21453,
"Dipartimento", "Computer SC.";
// Accedi ai valori
std :: string fname = jdymployees.valore ("firstname", "oops");
std :: string lname = jdymployees.valore ("lastname", "oops");
int sid = JDemployees.valore ("StudentId", 0);
Std :: String Dept = JDemployees.valore ("dipartimento", "oops");
// stampa i valori
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;
restituzione 0;

Esempio-2: analizzare e serializzare JSON in C++

In questo programma di esempio, vedremo come analizzare e serializzare JSON in C++. Stiamo usando "JSON :: Parse ()" per analizzare i dati JSON.

#includere
#include "json.HPP "
#includere
usando json = nlohmann :: json;
int main ()

// Ecco un testo JSON
char text [] = r "(

"Libro":
"Larghezza": 450,
"Altezza": 30,
"Titolo": "Hello World",
"isbiografia": falso,
"NUMOFCOPIES": 4,
"LibraryIds": [2319, 1406, 3854, 987]


) ";
// Leggiamo e serializza JSON
json j_complete = json :: parse (testo);
std :: cout << std::setw(4) << j_complete << std::endl;

Esempio-3: analizza json in c++

Ora dimostreremo come analizzare la stringa JSON usando la libreria Rapidjson. Rapidjson è stato originariamente ispirato dal RapidXML. In questo programma di esempio, stiamo analizzando una stringa JSON in DOM. Abbiamo dichiarato "mydoc" di tipo "documento" e quindi usando il "mydoc.Parse () "Metodo per analizzare la stringa JSON.

#includere
#include "rapidjson/writer.H"
#include "rapidjson/documento.H"
#include "Rapidjson/StringBuffer.H"
Utilizzo dello spazio dei nomi Rapidjson;
int main ()

const char* json = "" firstName ":" Sean "," LastName ":" Brown "," Empid ": 21453,
"Dipartimento": "Computer SC."";
// analizza la stringa JSON in DOM
Documenta mydoc;
mydoc.Parse (JSON);
// Dom to String
Buffer StringBuffer;
scrittore scrittore (buffer);
mydoc.Accettare (scrittore);
// Stampa l'output
std :: cout << buffer.GetString() << std::endl;
restituzione 0;

Conclusione

In questo articolo, abbiamo discusso brevemente di dati JSON, oggetto, array e sintassi. Come sappiamo, non esiste una soluzione nativa per l'analisi dei dati JSON in C ++; Abbiamo usato due librerie diverse per analizzare i dati JSON in C++. Abbiamo esaminato tre diversi esempi per dimostrare il meccanismo di analisi dei dati JSON in C++. Rispetto alla biblioteca "Nlohmann", il Rapidjson è piccolo, veloce e adatto alla memoria.