因为要解析json,为了避免重复造轮子就查找了C语言解析json的库(虽然我也想自己写一个解析json的库,可能在我把我的项目完成后会自己做一个。),然后就决定使用cJSON这个库,因为它比较轻量级上手也快,学会几个函数调用就可以解析json了,下面是json的简单使用和介绍。
cJSON是C语言的一个轻量级的一个json解析库。下载地址在这里
下面是cJSON中json的数据结构
typedef struct cJSON {
struct cJSON *next,*prev;
//上(下)一个节点
struct cJSON *child;
//子节点
int type;
//元素类型
char *valuestring;
//如果元素是字符串的值
int valueint;
//如果元素是整形的值
double valuedouble;
//如果元素是浮点型的值
char *string;
//字段名称
} cJSON;
type在cJSON中定义了七种类型
#define cJSON_False 0
#define cJSON_True 1
#define cJSON_NULL 2
#define cJSON_Number 3
#define cJSON_String 4
#define cJSON_Array 5
#define cJSON_Object 6
cJSON通过cJSON_Parse()函数传入字符串创建cJSON链表(双向)并返回cJSON指针。
下面是解析流程
1.先将字符串处理成cJSON对象
char *js_string = "{\"status\":\"1\",\"info\":\"OK\",\"infocode\":\"10000\"}";
cJSON *root;
root = cJSON_Parse(js_string);
2.通过字段名称获取值
cJSON *json_status, *json_info;
json_status = cJSON_GetObjectItem(root, "status");
json_info = cJSON_GetObjectItem(root, "info");
printf("status:%s, info:%s\n", json_status->valuestring, json_info->valuestring);
3.释放cJSON链表
cJSON_Delete(root);
其他函数介绍
1.将json结构体转化成字符串
printf(cJSON_Print(root));
奇变偶不变,符号看象限
------------------------------鲁迅
水出我第二篇文章了哈哈哈哈
给我点十个赞我就买瓶可乐庆祝下
网友评论