J'ai créé cette petite librairie pour décoder et encoder des fichiers JSON, avec un fichier en-tête et un fichier source seulement.
JSON est un format de fichier très léger pour stocker vos données un peu comme XML.
http://fr.wikipedia.org/wiki/JavaScript_Object_Notation
Fonctionnalités :
Accesseurs de tableaux et d'objets [].
Test des types "isBoolean", "isNumber"...
Assignation directe avec les bool, int, double, string, etc.
Ajout, insertion directe dans un tableau avec "<<" ou "push_back".
Extraction des valeurs vers les types natifs avec ">>" ou la méthode "asInt", etc.
Gestion d'exceptions.
etc.
Source / Exemple :
#include "json.h"
#include <iostream>
int main()
{
JSONValue object;
object = JSON::decode( " {\"menu\": { \
\"id\": \"file\", \
\"value\": \"File\", \
\"popup\": { \
\"menuitem\": [ \
{\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"}, \
{\"value\": \"Open\", \"onclick\": \"OpenDoc()\"}, \
{\"value\": \"Close\", \"onclick\": \"CloseDoc()\"} \
] \
} \
}}" );
object[ "menu" ][ "id" ] = "fichier"; // Assignation
object[ "menu" ][ "popup" ][ "menuitem" ].erase( 1 ); // Suppression dans un tableau
object[ "menu" ][ "popup" ][ "options" ] = JSONArray();
object[ "menu" ][ "popup" ][ "options" ] << 1 << JSON::null << 2; // Ajout dans un tableau
object[ "menu" ][ "popup" ][ "options" ].insert( 0, "json" ); // Insertion dans un tableau
object[ "menu" ][ "value" ] = 5; // Assignation avec un type différent
std::cout << object.encode() << std::endl;
JSON::save( object, "data.json" );
/*
Résultat attendu :
{"menu": {"id": "fichier", "popup": {"menuitem": [{"onclick": "CreateNewDoc()", "value": "New"}, {"onclick": "CloseDoc()", "value": "Close"}], "options": ["json", 1, null, 2]}, "value": 5}}
return 0;
}
Conclusion :
Si vous avez besoin de fonctionnalités supplémentaires ou si vous avez modifié la bibliothèque pour corriger des bugs, merci de m'en informer.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.