Comment analyser JSON en C++

How Parse Json C



L'intention de ce tutoriel est de comprendre les données JSON et comment analyser les données JSON en C++. Nous discuterons des données JSON, des objets, des tableaux et de la syntaxe JSON, puis passerons en revue plusieurs exemples de travail pour comprendre le mécanisme d'analyse des données JSON en C++.

Qu'est-ce que JSON ?

JSON est une représentation textuelle légère permettant de stocker et de transférer des données structurées de manière organisée. Les données JSON sont représentées sous la forme de listes ordonnées et de paires clé-valeur. JSON signifie J ava S copiste OU bjet N otation. Comme son nom complet l'indique, il est dérivé de JavaScript. Cependant, les données JSON sont prises en charge dans la plupart des langages de programmation courants.







Il est souvent utilisé pour transférer les données du serveur vers une page Web. Il est beaucoup plus facile et plus propre de représenter les données structurées en JSON qu'en XML.



Règle de syntaxe JSON

Voici les règles de syntaxe JSON :



  1. Les données JSON doivent toujours être sous la forme de paires clé-valeur.
  2. Les données JSON sont séparées par des virgules.
  3. Une accolade est utilisée pour représenter l'objet JSON.
  4. Un crochet est utilisé pour représenter un tableau JSON.

Qu'est-ce que les données JSON ?

Les données JSON sont représentées sous la forme de paires clé-valeur. Ceci est similaire à un dictionnaire ou à un hachage dans d'autres langages de programmation.





Nom : Drake

Ceci est un exemple de données JSON simples. La clé ici est Name et Drake est la valeur correspondante. La clé, c'est-à-dire le nom et la valeur, c'est-à-dire Drake, sont séparées par deux points.



Extension de fichier JSON

Les données JSON sont normalement stockées dans le fichier avec l'extension .json. Par exemple, pour stocker les données de l'employé, vous pouvez simplement nommer le fichier « employee.json ». Ce serait un simple fichier texte. Vous pouvez ensuite ouvrir ce fichier JSON dans l'un de vos éditeurs de texte préférés.

Objet JSON

L'objet JSON n'est rien d'autre que les données JSON entre les accolades. Voici un exemple d'objet JSON :

{
Nom:Canard,
Identifiant de l'employé:23547a,
Téléphone: 23547,
département:La finance
}

Un objet JSON peut contenir plusieurs données JSON. Chaque donnée JSON est séparée par une virgule. Les données JSON sont représentées sous forme de paires clé-valeur. La clé, c'est-à-dire le nom et la valeur, c'est-à-dire Drake, sont séparées par deux points. Dans l'exemple ci-dessus, il existe quatre paires clé-valeur. La première clé est Nom ; Drake est la valeur correspondante pour cela. De même, EmployeeID, Phone et Department sont les trois autres clés.

Tableau JSON

Un tableau JSON peut contenir plusieurs objets JSON séparés par des virgules. Le tableau JSON est placé entre crochets. Regardons un exemple de tableau JSON :

'Étudiants':[
{'prénom':'Sean', 'nom de famille':'Brun'},
{'prénom':'Canard', 'nom de famille':'Guillaume'},
{'prénom':'À M', 'nom de famille':'Meunier'},
{prénom:Pierre,nom de famille:Johnson}
]

Ceci est un exemple de tableau JSON. Ici, Students est entouré d'un crochet, c'est-à-dire un tableau, et il contient quatre objets JSON. Chacun de ces objets est représenté sous forme de paires clé-valeur et est séparé par une virgule.

Un exemple de fichier JSON

Maintenant, puisque nous avons compris les données JSON, les objets JSON, le tableau JSON, regardons un exemple de fichier JSON :

{
prénom:Sean,
nom de famille:brun,
Carte d'étudiant: 21453,
département:Informatique,
Sujets:[Math,Phy,Chimie]
}

Bibliothèques d'analyse en C++ :

Il n'y a pas de solution native pour analyser les données JSON en C++. Cependant, il existe plusieurs bibliothèques pour analyser les données JSON en C++. Dans cet article, nous allons examiner les deux bibliothèques les plus populaires pour analyser les données JSON en C++. Voici les liens GitHub pour l'analyse des données JSON :

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

Vous pouvez télécharger ces bibliothèques pour pouvoir exécuter les exemples ci-dessous.

Exemples

Maintenant, nous avons une compréhension de base des données JSON, des objets, des tableaux et des bibliothèques d'analyse disponibles. Regardons maintenant quelques exemples pour analyser des données JSON en C++ :

  • Exemple-1 : Analyser JSON en C++
  • Exemple-2 : Analyser et sérialiser JSON en C++
  • Exemple-3 : Analyser JSON en C++

Pour l'Exemple-1 et l'Exemple-2, nous allons utiliser la bibliothèque nlohmann. Dans le cas de l'exemple-3, nous utiliserons la bibliothèque RapidJSON.

Exemple-1 : Analyser JSON en C++

Dans cet exemple de programme, nous montrerons comment accéder aux valeurs des données JSON en C++.

#comprendre
#include 'json.hpp'

en utilisant json=nlohmann::json;

entierprincipale()
{

// jdEmployés
json jdEmployés=
{
{'prénom','Sean'},
{'nom de famille','Brun'},
{'Carte d'étudiant',21453},
{'Département','Science informatique'}
};

// Accéder aux valeurs
les heures::chaîne de caractèresfNom=jdEmployés.valeur('prénom', 'Oups');
les heures::chaîne de caractèreslNom=jdEmployés.valeur('nom de famille', 'Oups');
entiersID=jdEmployés.valeur('Carte d'étudiant', 0);
les heures::chaîne de caractèresdépartement=jdEmployés.valeur('Département', 'Oups');

// Imprimer les valeurs
les heures::cout << 'Prénom: ' <<fNom<<les heures::fin;
les heures::cout << 'Nom de famille: ' <<lNom<<les heures::fin;
les heures::cout << 'Carte d'étudiant: ' <<sID<<les heures::fin;
les heures::cout << 'Département: ' <<département<<les heures::fin;

revenir 0;
}

Exemple-2 : Analyser et sérialiser JSON en C++

Dans cet exemple de programme, nous allons voir comment analyser et sérialiser JSON en C++. Nous utilisons json::parse() pour analyser les données JSON.

#comprendre
#include 'json.hpp'
#comprendre

en utilisant json=nlohmann::json;

entierprincipale()
{
// Voici un texte JSON
carbonisertexte[] =R'(
{
'
Livre' : {
'
Largeur': 450,
'
Hauteur': 30,
'
Titre':'Bonjour le monde',
'
isBiographie': faux,
'
NombreDeCopies': 4,
'
ID de bibliothèque': [2319, 1406, 3854, 987]
}
}
) '
;

// Analysons et sérialisons JSON
json j_complete=json::analyser(texte);
les heures::cout <<les heures::setw(4) <<j_complete<<les heures::fin;
}

Exemple-3 : Analyser JSON en C++

Nous allons maintenant montrer comment analyser une chaîne JSON à l'aide de la bibliothèque RapidJSON. RapidJSON a été inspiré à l'origine par RapidXML. Dans cet exemple de programme, nous analysons une chaîne JSON dans DOM. Nous avons déclaré mydoc de type Document puis utilisé la méthode mydoc.parse() pour analyser la chaîne JSON.

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

en utilisant l'espace de noms rapidjson;

entierprincipale()
{

const carboniser*json= '{'prénom':'Sean','nom de famille':'brun','empId': 21453,
'
département':'Informatique'}';

// Analyse la chaîne JSON dans DOM
Documenter mondoc;
mondoc.Analyser(json);

// DOM en chaîne
Tampon StringBuffer;
Écrivain<Tampon de chaîne>écrivain(amortir);

mondoc.J'accepte(écrivain);

// Imprimer la sortie
les heures::cout <<amortir.Obtenir une chaîne() <<les heures::fin;

revenir 0;
}

Conclusion

Dans cet article, nous avons brièvement discuté JSON données, objet, tableau et syntaxe. Comme nous le savons, il n'existe pas de solution native pour l'analyse des données JSON en C++ ; nous avons utilisé deux bibliothèques différentes pour analyser les données JSON en C++. Nous avons examiné trois exemples différents pour démontrer le mécanisme d'analyse des données JSON en C++. Par rapport à la bibliothèque nlohmann, le RapidJSON est petit, rapide et convivial en mémoire.