四时宝库

程序员的知识宝库

使用cJSON创建JSON字符串(创建一个json格式的字符串)

最近需要用单片机解析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解析,尽请期待!!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接