Jansson是一个基于C语言的JSON库,最新的文档请看这个链接。
在FreeRTOS任务里使用的时候要注意分配给任务足够的内存空间以及Jansson内存的申请和释放,否则可能会出现组装JSON对象错误。
代码示例如下:
#include <jansson.h>
/*
...
*/
void TestTask(void const * argument)
{
/* USER CODE BEGIN Task */
json_set_alloc_funcs(pvPortMalloc, vPortFree);//设置内存分配和释放函数
int err = 0;
json_t* root;
root = json_object();
char* pString;
/* Infinite loop */
for(;;)
{
err = json_object_set_new(root, "v1", json_integer(value1));
if(err !=0 ) printf("v1 json_object_set_new error! \r\n");
err = json_object_set_new(root, "v2", json_integer(value2));
if(err !=0 ) printf("v2 json_object_set_new error! \r\n");
err = json_object_set_new(root, "v3", json_integer(value3));
if(err !=0 ) printf("v3 json_object_set_new error! \r\n");
/*
...
*/
printf("json_object_size= %d \r\n", json_object_size(root));
pString = json_dumps(root, JSON_ENCODE_ANY);
json_object_clear(root);
printf("%s\n", pString);
vPortFree(pString);
}
}