加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cJSON使用

发布时间:2020-12-16 19:34:16 所属栏目:百科 来源:网络整理
导读:JSON 官网 http://www.json.org/ 转载:json-c 库使用 http://www.cnblogs.com/fengbohello/p/4033272.html cJSON 库使用 http://www.cnblogs.com/fengbohello/p/4033272.html cJSON 是 C 语言 中的一个 JSON 编解码器,非常轻量级, C 文件只有 500 多行,

JSON官网http://www.json.org/

转载:json-c 库使用http://www.cnblogs.com/fengbohello/p/4033272.html

cJSON库使用http://www.cnblogs.com/fengbohello/p/4033272.html

cJSONC语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。强烈推荐!

cJSON也存在几个弱点:

1不支持[1,2,3,]{"one":1,}最后多余的那个逗号。这是C语言就开始支持的,JSON RFC文档中没有对此说明,只能说这是扩展功能吧。

2 不支持/*注释*/,和//单行注释。这也是扩展功能。C/C++/Java/JavaScript都支持注释,所以我也希望在json文件中写点注释。

3 使用了个全局变量指示出错位置。这个在多线程时就有问题啦。

4 没有封装文件操作,用户需要自己读写文件。

json-c是另外一个C语言项目,提供了所有的功能,甚至支持单引号字符串,但是结构较cJSON更为复杂。解析字符串的核心函数没有使用递归实现,最多支持32层数组或对象嵌套

cJSON的网址:http://sourceforge.net/projects/cjson/

打开cJSON.h文件看看数据类型和函数名基本上就能上手了。

主要数据类型:

typedef struct cJSON {

struct cJSON *next,*prev; /* next/prev allow you to walk array/object chains. Alternatively,use GetArraySize/GetArrayItem/GetObjectItem */

struct cJSON *child; /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */

int type; /* The type of the item,as above. */

char *valuestring; /* The item's string,if type==cJSON_String */

int valueint; /* The item's number,if type==cJSON_Number */

double valuedouble; /* The item's number,if type==cJSON_Number */

char *string; /* The item's name string,if this item is the child of,or is in the list of subitems of an object. */

} cJSON;

他定义了一个cJSON结构体,使用了链表存储方式。type代表这个结构体的类型,包括数、字符串、数组、json对象等。如果代表的是实数,则valuedouble就存储了这个实数取值,其余成员类似容易看懂。

几个常用函数

extern cJSON *cJSON_Parse(const char *value);//解析一个json字符串为cJSON对象

extern char *cJSON_Print(cJSON *item);//json对象转换成容易让人看清结构的字符串

extern char *cJSON_PrintnUnformatted(cJSON *item);//json对象转换成一个很短的字符串,无回车

extern void cJSON_Delete(cJSON *c);//删除json对象

extern int cJSON_GetArraySize(cJSON *array);//返回json数组大小

extern cJSON *cJSON_GetArrayItem(cJSON *array,int item);//返回json数组中指定位置对象extern cJSON *cJSON_GetObjectItem(cJSON *object,const char *string);//返回指定字符串对应的json对象

extern cJSON *cJSON_CreateIntArray(int *numbers,int count);//生成整型数组json对象

extern void cJSON_AddItemToArray(cJSON *array,cJSON *item);//向数组中添加元素

README文件中也提供了一些简单的说明和例子程序。


cJSON是个简单而好用的C语言JSON。两个c文件一看就懂了,至此你就掌握JSON的使用了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读