Librairie json c++

Description

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.

Codes Sources

A voir également

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.