Je développe un logiciel C embarqué qui construit une chaîne JSON avec plusieurs paramètres (chaîne et entier). Pour mon but j'ai utilisé cJSON) à l'avenir j'ai besoin d'analyser complexe JSON).La fonction d'impression cJSON n'ajoute pas de numéro à l'objet
Je construis mon JSON avec ce code:
jsonObject = cJSON_CreateObject();
cJSON_AddNumberToObject(jsonObject, "Version", 1);
cJSON_AddStringToObject(jsonObject, "ID", "xyz");
cJSON_AddStringToObject(jsonObject, "Local", "1234");
cJSON_AddNumberToObject(jsonObject, "Type", 1);
cJSON_AddStringToObject(jsonObject, "Message", "Hello");
Ensuite, j'imprimer le JSON dans un tampon dynamique à l'aide:
cJSON_PrintPreallocated(jsonObject, *jsonMessage, *jsonMessageLen, 0)
Quand je visualise la jsonMessage sur un terminal, la propriété « Type "n'a pas de valeur.
C'est construit JSON:
{"Version":1,"ID":"xyz","Local":"123","Type":,"Message":"Hello"}
J'essaie d'utiliser une méthode d'impression différente, par exemple je:
CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt)
Et le JSON est construit correctement. Le problème est que j'ai besoin d'allouer la mémoire par moi-même et de ne pas utiliser cJSON_PrintBuffered. Ceci parce que je ne peux pas utiliser malloc et la fonction libre.
Des suggestions?
Merci
Utilisez [* json-c * qui est solide comme un roc] (https://github.com/json-c/json-c), et simple à utiliser. Cela pourrait être un bug dans la bibliothèque cJSON. –
J'ai besoin d'une libray légère pour le système embarqué. Est-ce? – Federico
Oui c'est, très léger en fait. C'est rapide et largement utilisé. –