最近需要用单片机解析esp8266模块get到的json数据,顺便学习了下cJSON的知识,当作一个笔记吧,分享出来大家一起学习。这个是创建JSON字符串,后面还有解析。
1,下载源码
最新版的cJson源码可以从github上进行下载。
2,包含cJSON的源码
下载下来,解压后,从里面找到两个文件(cJSON.c、cJSON.h),复制到我们的工程里面。只需在函数中包含头文件(#include “cJSON.h”),然后和cJSON.c一起编译即可使用。
3,创建一个键值对
首先是一个简单的键值对字符串,要生成的目标如下:
{"firstName":"Brett"}
要进行创建,就是先确定键与值,然后转为cJSON格式。我们很容易就能明确键为firstName,值为Brett,可是,使用cJSON怎么创建呢?
对于这个简单的例子,我们需要调用cJSON的五个接口函数就可以实现创建了。(有人不乐意了:都五个函数了,你还说“就可以了”----其实是一法通,百法通,学会了这个创建,其他的创建动作都是非常类似的。)
这五个函数的原型如下:
cJSON*cJSON_CreateObject ();
cJSON*cJSON_CreateString(const char *string);
voidcJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item);
voidcJSON_Delete(cJSON *c);
char*cJSON_Print(cJSON *item);
下面按创建过程来描述一次:
运行结果
4,转换一个结构体
接下来,我们来个复杂一点的,将一个结构体转换为JSON字符串,结构体定义如下:
看起来比一个键值对复杂多了,我们又需要学习新的接口函数了吗?
是的,由于出现了数字,我们需要学习一个新函数:
cJSON *cJSON_CreateNumber(double num);
当然,创建的步骤要更复杂一些,下面我仍然是按创建过程来描述一次:
运行结果
通过上面的代码就可以简单的生成JSON的字符串了,在物联网系统中使用stm32单片机来处里一些数据交换就有可以有标准格式了,方便和上位机的交互。cJSON解析,尽请期待!!