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

转载: cjson使用笔记 http://www.cnblogs.com/chineseboy/p/3959852.html

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

  cjson使用笔记,作者:鱼竿的传说,写的非常好,易懂详细,通读一遍,便可掌握。非常赞!

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的使用了。

GitHub 加速计划 / cj / cJSON
10.45 K
3.16 K
下载
Ultralightweight JSON parser in ANSI C
最近提交(Master分支:2 个月前 )
424ce4ce This reverts commit 5b502cdbfb21fbe5f6cf9ffbd2b96e4281a741e6. Related to #860 4 个月前
32497300 - 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐