Une bibliothèque C++ légère et typée pour la création, la manipulation et le parsing de données JSON.
libjson est une bibliothèque développée en C++ permettant d'interagir facilement avec des objets JSON. Elle offre une interface intuitive basée sur la surcharge d'opérateurs (comme l'opérateur []) et assure une gestion rigoureuse des types via la classe polymorphe JsonContent.
Le projet utilise Meson et Ninja pour la compilation, avec un Makefile fourni pour simplifier les commandes.
pip install meson ninjamakeLes objets partagés (.so) seront générés dans le dossier build/.
Lors d'un build, l'arborescence suivante est générée pour faciliter l'intégration :
include/: ContientJson.hpp(le seul fichier d'en-tête dont vous avez besoin).lib/: Contient les archives statiqueslibjson.aetlibjson.dll.a.bin/: Contient les bibliothèques dynamiqueslibjson.soetlibjson.dll.
L'accès et la modification se font de manière transparente. Note : Les clés de l'objet JSON doivent obligatoirement être de type std::string.
#include"Json.hpp"
Json myJson;
// Assignation de valeurs via l'opérateur []
myJson["name"] = "agtdbx";
myJson["is_developer"] = true;
// Assignation via la méthode setContent
myJson.setContent("school", 42);La bibliothèque gère nativement une grande variété de types C++ :
- Primitifs :
int,unsigned int,long,unsigned long,float,double,bool,char,char*,std::string,std::nullptr,(void*)0. - Listes : Tous les tableaux JSON sont représentés par des
std::vector(ex:std::vector<int>,std::vector<std::string>, etc.). - Objets imbriqués : Vous pouvez imbriquer des types
Jsonou desstd::vector<Json>.
[]).
Convertissez votre objet en chaîne de caractères via la méthode toString(bool indented).
// true = formatage multi-lignes indenté avec des tabulations
std::string pretty_output = myJson.toString(true); // false = formatage minifié sur une seule ligne
std::string minified_output = myJson.toString(false); Deux approches sont disponibles pour parser une chaîne JSON :
std::string jsonString = "{\"key\": \"value\"}";
// 1. Via la méthode statique
Json parsedJson = Json::parse(jsonString);
// 2. Depuis un objet existant (Attention : cela efface les données précédentes de l'objet)
myJson.parseFromString(jsonString);La bibliothèque garantit la sécurité de vos opérations en levant des exceptions claires :
JsonParseError: Déclenchée si la syntaxe de la chaîne JSON est invalide lors du parsing.JsonKeyError: Déclenchée lors de l'utilisation de la méthode.getContent(key)si la clé n'existe pas. (Note : utiliser l'opérateur[]avec une clé inexistante créera automatiquement un contenunullau lieu de planter).JsonContentTypeError: Déclenchée lors d'une tentative d'assignation avec un type C++ non supporté.