为什么选择cJSON来解析JSON字符串?因为简洁又简单,而且效率又快,cJSON工程文件也非常简单,仅一个.c文件和一个.h文件!
如果要自己写的话就是重造轮子了,况且效率上也不一定会比cJSON更好!
且文件体积大小不到30k,源代码思路也非常清晰,也非常适合研究。
点击下载CJSON
typedef struct cJSON
{ //cJSON结构体
struct cJSON *next,*prev; /* 遍历数组或对象链的前向或后向链表指针*/
struct cJSON *child; /* 数组或对象的孩子节点*/
int type; /* key的类型*/
char *valuestring; /* 字符串值*/
int valueint; /* 整数值*/
double valuedouble; /* 浮点数值*/
char *string; /* key的名字*/
} cJSON;
正所谓万丈高楼平地起,先从最简单的开始!
先来介绍四个常用的cJSON函数:
cJSON *cJSON_Parse(const char *value);
作用:将一个JSON数据包,按照cJSON结构体的结构序列化整个数据包,并在堆中开辟一块内存存储cJSON结构体
返回值:成功返回一个指向内存块中的cJSON的指针,失败返回NULL
cJSON *cJSON_GetObjectItem(cJSON *object,const char *string);
作用:获取JSON字符串字段值
返回值:成功返回一个指向cJSON类型的结构体指针,失败返回NULL
char *cJSON_Print(cJSON *item);
作用:释放位于堆中cJSON结构体内存
返回值:无
假如说有这样的一个JSON字符串
{
"test_1":"0"
"test_2":"1"
"test_3":"2"
} //json_string
这是最简单的JSON字符串
我们首先要先将