/* * File: json.h * Author: Arthur Brandao * * Created on 28 octobre 2018 */ #ifndef JSON_H #define JSON_H /* --- Include --- */ #include #include "boolean.h" /* --- Constante --- */ #define JSON_ERROR -1 #define JSON_OK 0 #define JSON_STRING 1 #define JSON_NUMBER 2 #define JSON_BOOLEAN 3 #define JSON_ARRAY 4 #define JSON_OBJECT 5 /* --- Structure --- */ typedef struct{ char* str; //La chaine de carac json int elt; //Le nombre d'element char** key; //La position des clef dans la chaine char** val; //La position de la valeur int* key_length; //La taille des clefs int* val_length; //La taille des valeurs int* type; //Le type des valeurs }JsonParser; /* --- Fonctions ---- */ /** * Parse une chaine JSON en JsonParser * Initialise ou écrase les données du JsonParser * @param JsonParser* La structure de resultat (doit être alloué) * @param char* La chaine en JSON * @return int JSON_ERROR en cas d'erreur sinon JSON_OK */ int json_parse(JsonParser*, char*); /** * Donne la clef à un index donné * @param JsonParser* Le resultat de json_parse * @param int La position à regarder * @return char* La clef */ char* key_index(JsonParser*, int); /** * Donne la valeur à un index donné * @param JsonParser* Le resultat de json_parse * @param int La position à regarder * @return char* La valeur */ char* get_index(JsonParser*, int); /** * Donne la positon d'une valeur dans le JsonParser * @param JsonParser* Le resultat de json_parse * @param char* La clef lié à la valeur * @return int La position */ int get_pos(JsonParser*, char*); /** * Retourne le type de la vl=aleur * @param JsonParser* Le resultat de json_parse * @param char* La clef lié à la valeur * @return int constante JSON_XXXX du type de la valeur */ int get_type(JsonParser*, char*); /** * Retourne la valeur d'un element * @param JsonParser* Le resultat de json_parse * @param char* La clef lié à la valeur * @return char* La valeur, NULL en cas d'erreur (clef introuvable) */ char* get_value(JsonParser*, char*); /** * Retourne la valeur d'un element de type number * @param JsonParser* Le resultat de json_parse * @param char* La clef lié à la valeur * @return double La valeur, JSON_ERROR en cas d'erreur (type incorrect, clef introuvable) */ double get_number(JsonParser*, char*); /** * Retourne la valeur d'un element de type number * @param JsonParser* Le resultat de json_parse * @param char* La clef lié à la valeur * @return int La valeur, JSON_ERROR en cas d'erreur (type incorrect, clef introuvable) */ int get_integer(JsonParser*, char*); /** * Retourne la valeur d'un element de type boolean * @param JsonParser* Le resultat de json_parse * @param char* La clef lié à la valeur * @return boolean La valeur, false en cas d'erreur (type incorrect, clef introuvable) */ boolean get_boolean(JsonParser*, char*); /** * Retourne la valeur d'un element de type array * @param JsonParser* Le resultat de json_parse * @param char* La clef lié à la valeur * @return char* La valeur, NULL en cas d'erreur (type incorrect, clef introuvable) */ char* get_array(JsonParser*, char*); /** * Retourne la valeur d'un element de type object * @param JsonParser* Le resultat de json_parse * @param char* La clef lié à la valeur * @return JsonParser* L'object json analysé, NULL en cas d'erreur (type incorrect, clef introuvable, ...) */ JsonParser* get_object(JsonParser*, char*); /** * Supprime un JsonParser * @param JsonParser* Le JsonParser à supprimer */ void clean_json_parser(JsonParser*); #endif /* JSON_H */