libcjson
C JSON Library
 Tout Structures de données Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Macros
libcjson Documentation

Bibliothèque C de type Wrapper permetant l'utilisation de libjson (C++) en C.

Cette bibliothèque permet de faire les mêmes actions que libjson (excepté POCO pour des raisons évidentes).

Il est ainsi possible de:

  • Parser une chaine JSON en tant qu'arbre de données JSON
  • Modifier, Créer, Supprimer l'arbre de données JSON
  • Transformer un arbre JSON en chaine JSON
  • Sauvegarder arbre JSON en fichier JSON
  • Lire un fichier JSON en arbre JSON

Dépendances

Cette bibliothèque dépends de libcommon (Valentin CRÔNE).

Cette bibliothèque nécessite libjson (Valentin CRÔNE, version C++) pour fonctionner.

Fonctionnement

Cette bibliothèque ne gère aucun objet en mémoire, toute la gestion de la mémoire est gérée par libjson. Cette bibliothèque sert de tunnel pour permettre d'appeller en C un ensemble de fonctions normalement inutilisables. Cette bibliothèque sert de traducteur, elle traduit les types C++ en fournissant des équivalents en C afin de pouvoir traiter du C dans le programme C, et manipuler des types C que la bibliothèque d'origine ne gère pas.

Tous les objets JSON*_t génégés par cette bibliothèque sont nettoyables avec les fonctions associées. Tous les objets provenant de libcommon sont à nettoyer en appelant les fonctions de libcommon correspondantes.

Cette bibliothèque utilise autoString() de libcommon afin de simplifier la gestion des chaines de caractères et éviter les fuites de mémoire, il faut donc utiliser freeAutoString() à la fin d'un programme utilisant cette bibliothèque.

JSON: Pour comprendre le fonctionnement pur de libjson, consultez la documentation de libjson.

Transition de types

Tous les types utilisés par libjson sont représentés par cette bibliothèque sous forme de void*.

La bibliothèque défini un ensemble de type: JSONObject_t, JSONArray_t, ... qui sont tous de type void*, ils sont donc interchangeables. Leur création est ici uniquement pour simplifier l'utilisation et la documentation.

Cette bibliothèque étant un tunnel vers libjson, il faut respecter la hiérarchie d'objets qui lui est associée. Ainsi, toutes les fonctions utilisables pour chaque type sont définies dans cette bibliothèque.

Il est possible d'utiliser toutes les fonctions de JSONObject_t sur n'importe quel autre objet. Vérifiez tout de même sa compatibilité (exemple: JSONArray_t n'est pas compatible avec toutes les fonctions), vous pouvez donc utiliser un JSONObject_getParent() sur n'importe quel objet de la bibliothèque. Par contre, JSONObject_set() est spécifique a JSONObject, et comme dans libjson, il ne peut être utilisé sur une autre classe que JSONObject. En revanche il existe des versions appropriées, comme par exemple JSONArray_set() qui a des paramètres différents de la précédente, et qui est adaptée au type JSONArray_t.

Utilisation dans un projet

Compilation: gcc -o programme source.c -Wl,-rpath -Wl,. -Ilibcjson -L. -lvector -lstring -ljson -lcjson

Auteur

© 2018 Valentin CRÔNE Tous droits réservés