一、c语言获取json中的数据
先要有cJOSN库,两个文件分别是cJSON.c和cJSON.h。
下载地址:http://download.csdn.net/detail/wei_xiaox126/9174977
二、json数据结构
c语言中json数据是采用链表存储的
typedef struct cJSON {
struct cJSON*next,*prev;// 数组对象数据中用到
struct cJSON *child;// 数组 和对象中指向子数组对象或值
int type;// 元素的类型,如是对象还是数组
char *valuestring;// 如果是字符串
int valueint; // 如果是数值
double valuedouble;// 如果类型是cJSON_Number
char *string;// The item'sname string, if this item is the child of, or is in the list of subitems of anobject.
} cJSON;
三、cJSON使用
1、字符串解析成json结构体
1):讲字符串解析成json结构体。
cJSON *root = cJSON_Parse(my_json_string);
2):获取某个元素
cJSON *format =cJSON_GetObjectItem(root,"format");
int framerate =cJSON_GetObjectItem(format,"frame rate")->valueint;
int framerate =cJSON_GetObjectItem(format,"frame rate")->valueint;
3):讲json结构体转换成字符串
char *rendered=cJSON_Print(root);
4):删除
cJSON_Delete(root);
2、构建一个json结构体
1)示例:
{
"name": "Jack (\"Bee\") Nimble",
"format": {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 24
}
}
2)代码:
cJSON *root,*fmt;
root=cJSON_CreateObject();
cJSON_AddItemToObject(root,"name", cJSON_CreateString("Jack (\"Bee\")Nimble"));
cJSON_AddItemToObject(root,"format", fmt=cJSON_CreateObject());
cJSON_AddStringToObject(fmt,"type", "rect");
cJSON_AddNumberToObject(fmt,"width", 1920);
cJSON_AddNumberToObject(fmt,"height", 1080);
cJSON_AddFalseToObject(fmt,"interlace");
cJSON_AddNumberToObject(fmt,"framerate", 24)
out =cJSON_Print(root);
printf("%s\n",out);
cJSON_Delete(root);
free(out);