cJSON使用
JSON官网http://www.json.org/
转载: cjson使用笔记 http://www.cnblogs.com/chineseboy/p/3959852.html
cJSON库使用http://www.cnblogs.com/fengbohello/p/4033272.html
cjson使用笔记,作者:鱼竿的传说,写的非常好,易懂详细,通读一遍,便可掌握。非常赞!
cJSON是C语言中的一个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的使用了。
更多推荐
所有评论(0)