Come analizzare JSON in C++

How Parse Json C

L'intenzione di questo tutorial è comprendere i dati JSON e come analizzare i dati JSON in C++. Discuteremo i dati JSON, Object, Array, sintassi JSON e poi esamineremo diversi esempi funzionanti per comprendere il meccanismo di analisi dei dati JSON in C++.

Cos'è JSON?

JSON è una rappresentazione basata su testo leggera per l'archiviazione e il trasferimento di dati strutturati in modo organizzato. I dati JSON sono rappresentati sotto forma di elenchi ordinati e coppie chiave-valore. JSON sta per J ava S cripto O oggetto n otazione. Come indica il nome completo, deriva da JavaScript. Tuttavia, i dati JSON sono supportati nella maggior parte dei linguaggi di programmazione più diffusi.



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



Regola di sintassi JSON

Ecco le regole di sintassi JSON:



  1. I dati JSON devono essere sempre sotto forma di coppie chiave-valore.
  2. I dati JSON sono separati da virgole.
  3. Una parentesi graffa viene utilizzata per rappresentare l'oggetto JSON.
  4. Una parentesi quadra viene utilizzata per rappresentare un array JSON.

Che cosa sono i dati JSON?

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

Nome: Drake

Questo è un esempio di dati JSON semplici. La chiave qui è Nome e Drake è il valore corrispondente. La chiave, ovvero Nome e il valore, ovvero Drake, sono separati da due punti.



Estensione file JSON

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

Oggetto JSON

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

{
Nome:Drake,
Numero Identità dell'impiegato:23547a,
Telefono: 23547,
Dipartimento:Finanza
}

Un oggetto JSON può contenere più dati JSON. Ogni dato JSON è separato da una virgola. I dati JSON sono rappresentati come coppie chiave-valore. La chiave, ovvero Nome e il valore, ovvero Drake, sono separati da due punti. Nell'esempio sopra, ci sono quattro coppie chiave-valore. La prima chiave è Nome; Drake è il valore corrispondente per esso. Allo stesso modo, EmployeeID, Phone e Department sono gli altri tre tasti.

Array JSON

Un array JSON può contenere diversi oggetti JSON separati da virgole. L'array JSON è racchiuso tra parentesi quadre. Diamo un'occhiata a un esempio di un array JSON:

'Studenti':[
{'nome di battesimo':'Sean', 'cognome':'Marrone'},
{'nome di battesimo':'Draco', 'cognome':'Williams'},
{'nome di battesimo':'Tom', 'cognome':'Mugnaio'},
{nome di battesimo:Peter,cognome:Johnson}
]

Questo è un esempio di un array JSON. Qui Studenti è racchiuso tra parentesi quadre, ovvero array, e contiene quattro oggetti JSON. Ciascuno di questi oggetti è rappresentato sotto forma di coppie chiave-valore ed è separato da una virgola.

Un file JSON di esempio

Ora, poiché abbiamo compreso i dati JSON, gli oggetti JSON, l'array JSON, diamo un'occhiata a un esempio di un file JSON:

{
nome di battesimo:Sean,
cognome:Marrone,
ID studente: 21453,
Dipartimento:Computer Sc.,
Soggetti:[Matematica,Phy,chimica]
}

Analisi di librerie in C++:

Non esiste una soluzione nativa per l'analisi dei dati JSON in C++. Tuttavia, esistono diverse librerie per analizzare i dati JSON in C++. In questo articolo, esamineremo le due librerie 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 essere in grado di eseguire gli esempi mostrati di seguito.

Esempi

Ora abbiamo una conoscenza di base dei dati JSON, degli oggetti, degli array e delle 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++

Per l'Esempio-1 e l'Esempio-2, utilizzeremo la libreria nlohmann. Nel caso dell'Esempio 3, utilizzeremo 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;

intprincipale()
{

// jdDipendenti
json jdDipendenti=
{
{'nome di battesimo','Sean'},
{'cognome','Marrone'},
{'ID studente',21453},
{'Dipartimento','Informatica scientifica.'}
};

// Accedi ai valori
ore::cordafNome=jdDipendenti.valore('nome di battesimo', 'ops');
ore::cordalNome=jdDipendenti.valore('cognome', 'ops');
intsID=jdDipendenti.valore('ID studente', 0);
ore::cordaDipartimento=jdDipendenti.valore('Dipartimento', 'ops');

// Stampa i valori
ore::costo << 'Nome di battesimo: ' <<fNome<<ore::fine;
ore::costo << 'Cognome: ' <<lNome<<ore::fine;
ore::costo << 'ID studente: ' <<sID<<ore::fine;
ore::costo << 'Dipartimento: ' <<Dipartimento<<ore::fine;

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;

intprincipale()
{
// Ecco un testo JSON
chartesto[] =R'(
{
'
Prenotare': {
'
Larghezza': 450,
'
Altezza': 30,
'
Titolo':'Ciao mondo',
'
isBiography': falso,
'
NumCopie': 4,
'
ID libreria': [2319, 1406, 3854, 987]
}
}
) '
;

// Analizziamo e serializziamo JSON
json j_complete=json::analizzare(testo);
ore::costo <<ore::setw(4) <<j_complete<<ore::fine;
}

Esempio 3: analizza JSON in C++

Ora, dimostreremo come analizzare la stringa JSON usando la libreria RapidJSON. RapidJSON è stato originariamente ispirato da RapidXML. In questo programma di esempio, stiamo analizzando una stringa JSON in DOM. Abbiamo dichiarato mydoc di tipo Document e quindi utilizzando il metodo mydoc.parse() per analizzare la stringa JSON.

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

usando lo spazio dei nomi rapidjson;

intprincipale()
{

cost char*json= '{'nome di battesimo':'Sean','cognome':'Marrone','empid': 21453,
'
Dipartimento':'Computer Sc.'}';

// Analizza la stringa JSON in DOM
Documento miodoc;
miodoc.Analizzare(json);

// DOM in stringa
Buffer StringBuffer;
scrittore<StringBuffer>scrittore(respingente);

miodoc.Accettare(scrittore);

// Stampa l'output
ore::costo <<respingente.GetString() <<ore::fine;

Restituzione 0;
}

Conclusione

In questo articolo, abbiamo discusso brevemente JSON dati, oggetto, array e sintassi. Come sappiamo, non esiste una soluzione nativa per l'analisi dei dati JSON in C++; abbiamo utilizzato due diverse librerie 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 libreria nlohmann, RapidJSON è piccolo, veloce e compatibile con la memoria.