STM32嵌入式系统FreeRTOS使用cJSON解析和构建JSON
cJSON
Ultralightweight JSON parser in ANSI C
项目地址:https://gitcode.com/gh_mirrors/cj/cJSON
免费下载资源
·
一、环境
控制器STM32F407+MDK5.34+cJSON1.7.7
二、安装cJSON
MDK中打开Pack Install,选择Generic下边MDK-Pack::cJSON,点击安装Install
安装成功后,在Manage Run-Time Environment 中找到Data Exchange,并选择cJSON,下方点击OK。
可以在工程栏目下看到已经添加了cJSON。
三、使用cJSON
(1)在需要使用的文件中,增加头文件#include "cJSON.h"
(2)使用了操作系统时,用操作系统的内存管理接口替换cJSON默认的内存分配,以FREERTOS为例,调用cJSON_InitHooks函数进行重新指定。
cJSON_Hooks cJSONhooks_freeRTOS;
cJSONhooks_freeRTOS.malloc_fn = pvPortMalloc;
cJSONhooks_freeRTOS.free_fn = vPortFree;
cJSON_InitHooks(&cJSONhooks_freeRTOS);
(3)创建json对象并打印
cJSON *root,*fmt;
char *out;
root=cJSON_CreateObject();
cJSON_AddItemToObject(root, "from", cJSON_CreateString("Jianwang16"));
cJSON_AddItemToObject(root, "body", fmt=cJSON_CreateObject());
cJSON_AddStringToObject(fmt,"cmd", "start");
cJSON_AddNumberToObject(fmt,"port", 5100);
cJSON_AddFalseToObject (fmt,"pwr");
out=cJSON_PrintUnformatted(root);
OS_msgPrintf("size = %d string:%s\r\n\r\n\r\n",strlen(out),out);
(4)cJSON几乎都是动态内存分配,所以使用json对象结束后需要清理内存,清理root对象即可,如果调用了cJSON打印,则需要清理打印输出的char 指针,例如:
cJSON_Delete(root);
vPortFree(out);
四、测试样例和结果
GitHub 加速计划 / cj / cJSON
10.45 K
3.16 K
下载
Ultralightweight JSON parser in ANSI C
最近提交(Master分支:2 个月前 )
424ce4ce
This reverts commit 5b502cdbfb21fbe5f6cf9ffbd2b96e4281a741e6.
Related to #860
4 个月前
32497300 - 5 个月前
更多推荐
已为社区贡献14条内容
所有评论(0)