[C语言]快速了解JSON语法与使用cJSON

  JSON 是存储和交换文本信息的一种语法,因为其轻量化、易读、易扩展的特点,越来越被广泛采用,有点类似于XML,都是使用结构化方法来标记数据。

1、JSON的数据是采用键值对来表示:key:value,多个键值对使用逗号“,”分开。

2、JSON只有两种表示结构:对象和数组

对象,对象以大括号{}表示,1个对象中可以包含多个键值对。

数组,数组以中括号[]表示;1个数组中可以包含多个对象。

对象结构举列:

{

    key1:value1,

    key2:value2,

    ...

}

数组结构举例:

[

    {

        key1:value1,

        key2:value2

    },

    {

         key3:value3,

         key4:value4   

    }


 

  结构清楚了,再回来说一下键值对,键为字符串,代表的是这个数据的名字(name),而值可以有多种属性,可以是对象、数组、数字、字符串或者三个字面值(false、null、true)。由于值可以是对象,这就决定了键/值对是可以嵌套的。

  实际在嵌入式单片机开发的时候,可以通过调用cJSON.c与cJSON.h来快速实现JSON语**能。

  首先在cJSON.h可以看到cJSON结构体,该结构体是一个双向列表,并可通过*next,*prev遍历链表,通过*child指针访问下一层,其中type变量表达的是数据的类型,*valuestring、valueint、valuedouble代表的就是具体的数据,*string代表的就是这个数据的名称字符串。

  在cJSON.h已经有了所有需要用到的功能函数,并且在cJSON.c中可以看到其实现方式,但是对于快速使用,我们开始可以先了解常用的一些函数,如:

项目的创建:

extern cJSON *cJSON_CreateNull(void);

extern cJSON *cJSON_CreateTrue(void);

extern cJSON *cJSON_CreateFalse(void);

extern cJSON *cJSON_CreateBool(int b);

extern cJSON *cJSON_CreateNumber(double num);

extern cJSON *cJSON_CreateString(const char *string);

extern cJSON *cJSON_CreateArray(void);

extern cJSON *cJSON_CreateObject(void);

项目的添加:

extern void cJSON_AddItemToArray(cJSON *array, cJSON *item);

extern void cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item);

extern void cJSON_AddItemToObjectCS(cJSON *object,const char *string,cJSON *item);

项目的解析:

extern cJSON *cJSON_Parse(const char *value);

extern char  *cJSON_Print(cJSON *item);

extern char  *cJSON_PrintUnformatted(cJSON *item);

extern char *cJSON_PrintBuffered(cJSON *item,int prebuffer,int fmt);

项目的删除:

extern void   cJSON_Delete(cJSON *c);

  熟悉了以上这些函数之后,就可以将cJSON.h、cJSON.c添加到自己的单片机开发工程当中来通过相关函数解析收到的JSON数据包以及将自己的数据包封装成JSON发送给对方,使用的时候一定要注意,在使用中需要学会将不用的JSON进行删除,也就是cJSON_Delete(cJSON *c);,因为项目的创建是通过malloc申请的内存空间,如果没有删除的话会持续占用单片机RAM并最后导致RAM不够用。
---------------------
作者:forgot
链接:https://bbs.21ic.com/icview-3285428-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值