STM32快速使用CJSON(打包与解析)
目录㈠准备①软件②硬件③CJSON㈡导入项目㈢测试打包JSON数据STM32串口接受的数据㈣解析JSON数据STM32串口接受的数据㈠准备①软件MDK②硬件USB转TTL(调试)STM32开发板③CJSON下载入口找到其中的CJSON.c和CJSON.h㈡导入项目将CJSON.c和CJSON.h导入项目并在魔术棒中包含路径在startup_stm32f407xx这个文件里面将Heap_Size设置
·
- 写博客作为学习记录,加深印象,可能写的不对,或者有些地方写的不全,欢迎在下评论哈,我会及时更正
- 传送门:博客汇总帖
- 正文开始
ⅰ准备
①软件
- MDK
②硬件
- USB转TTL(调试)
- STM32开发板
③CJSON
-
找到其中的CJSON.c和CJSON.h
ⅱ导入项目
- 将CJSON.c和CJSON.h导入项目并在魔术棒中包含路径
- 在startup_stm32f407xx.s(其他型号也一样找到startup_stm32f×××××.s即可)这个文件里面将Heap_Size()设置为0xC00
- 在main.c中包含头文件 #include “cJSON.h” #include <stdlib.h>
- 编译没错的话就可以开始使用
ⅲ测试打包JSON数据
①STM32
- 在主函数中调用就可以了(看注释)
void json_pack(void)
{
static uint8_t number_data;
cJSON * usr;
char *data;
number_data=number_data+1; //模拟数字
if(number_data>100)
{
number_data=0;
}
usr=cJSON_CreateObject(); //创建根数据对象
cJSON_AddItemToObject(usr, "A", cJSON_CreateNumber(number_data)); //根节点下添加数字
cJSON_AddItemToObject(usr, "B", cJSON_CreateString("hello")); //根节点下添加字符
cJSON_AddItemToObject(usr, "C", cJSON_CreateString("帅")); //根节点下添加汉字
data = cJSON_Print(usr); //将json形式打印成正常字符串形式(带有\r\n)
// data = cJSON_PrintUnformatted(usr); //将json形式打印成正常字符串形式(没有\r\n)
printf("%s",data); //通过串口打印出来
/********************/
/* 释放内存 */
/*********************/
cJSON_Delete(usr);
free(data);
}
②串口接受的数据
至于创建子类的目前我还没有用到就不写了
ⅳ解析JSON数据
①STM32
```c
void json_analysis()
{
cJSON *json,*json_one,*json_two,*json_three;
char* out="{\"one\":\"long\",\"two\":\"2\",\"three\":3}";
json = cJSON_Parse(out); //将得到的字符串解析成json形式
/****************************/
/* 测试将JSON打印出来 */
/***************************/
//char *out_data = cJSON_Print(json); //将json形式打印成正常字符串形式
//printf("%s",out_data);
json_one = cJSON_GetObjectItem( json , "one" ); //从json获取键值内容
json_two = cJSON_GetObjectItem( json , "two" );//从json获取键值内容
json_three = cJSON_GetObjectItem( json , "three" );//从json获取键值内容
printf("\r\none:%s two:%d three:%d",json_one->valuestring,json_two->valueint,json_three->valueint);
cJSON_Delete(json); //释放内存
}```
②串口接受的数据
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)