STM32快速使用CJSON(打包与解析)

  • 咳咳,我是小白一个,写博客作为学习记录,加深印象,可能写的不对,或者有些地方写的不全,欢迎在下评论哈,我会及时更正
  • 传送门:博客汇总帖
  • 正文开始

目录

  • ⅰ准备
    • ①软件
    • ②硬件
    • ③CJSON
  • ⅱ导入项目
  • ⅲ测试打包JSON数据
    • ①STM32
    • ②串口接受的数据
  • ⅳ解析JSON数据
    • ①STM32
    • ②串口接受的数据

ⅰ准备

①软件

  • 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
  • 编译没错的话就可以开始使用

ⅲ测试打包JSON数据

①STM32

  • 在主函数中调用就可以了(看注释)
static uint8_t number_data=0;
void json_pack(void)
{
    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);
}

②串口接受的数据

STM32快速使用CJSON(打包与解析)_第1张图片

至于创建子类的目前我还没有用到就不写了

ⅳ解析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);  //释放内存 
}```

②串口接受的数据

STM32快速使用CJSON(打包与解析)_第2张图片

有什么问题可以一起交流QQ:1642181814

你可能感兴趣的:(STM32,json,stm32)