Liunx c 使用开源cJSON开源库解析json格式的数据文件
cJSON下载地址 https://files.cnblogs.com/files/piaoyang/cJSONFiles.rar
自己使用时可以只需要其中的cJSON.c和cJSON.h即可
这里需要使用一个很重的要json结构体
typedef struct cJSON {
struct cJSON next,prev; / 遍历数组或对象链的前向或后向链表指针/
struct cJSON *child; /数组或对象的孩子节点/
int type; /* key的类型*/
char *valuestring; /字符串值/
int valueint; /* 整数值*/
double valuedouble; /* 浮点数值*/
char string; / key的名字*/
} cJSON;
说明:
1、cJSON是使用链表来存储数据的。
2、type是键(key)的类型,一共有7种取值,分别是:False,Ture,NULL,Number,String,Array,Object。
重要的接口函数:
1.cJSON *cJSON_Parse(const char *value);
功能:解析JSON数据包,把自己的数据传过去并按照cJSON结构体的结构序列化整个数据包。可以看做是获取一个句柄。
2.cJSON *cJSON_GetObjectItem(cJSON *object,const char *string);
功能:获取json指定的对象成员
3.cJSON *cJSON_GetArrayItem(cJSON *array,int item);
功能:有可能第二个函数中获取到的是成员对象值是一个数组,那么就需要用到这个函数。用来获取这个数组指定的下标对象
4.cJSON_Delete()
功能:用来释放你第一步获取的句柄,来释放整个内存。
下面用几个简单的例子示范一下
1:读取简单的JSON数据
主程序
打印结果
2:读取JSON数据文件
json数据文件内容,文件名 date.json
主程序
结果
3.读取JSON数组数据
josn数据内容
解析的 内容是省名和天气情况
结果