本文共 1314 字,大约阅读时间需要 4 分钟。
分类: 2012-05-07 10:56 331人阅读 我使用的是cJSON:
先看json的数据结构
c中没有对象,所以json数据是采用链表存储的
- typedef struct cJSON {
- struct cJSON *next,*prev;
- struct cJSON *child;
-
- int type;
-
- char *valuestring;
- int valueint;
- double valuedouble;
-
- char *string;
- } cJSON;
比如你有一个json数据
- {
- "name": "Jack (\"Bee\") Nimble",
- "format": {
- "type": "rect",
- "width": 1920,
- "height": 1080,
- "interlace": false,
- "frame rate": 24
- }
- }
那么你可以
1:讲字符串解析成json结构体。
- cJSON *root = cJSON_Parse(my_json_string);
2:获取某个元素
- cJSON *format = cJSON_GetObjectItem(root,"format");
- int framerate = cJSON_GetObjectItem(format,"frame rate")->valueint;
3:讲json结构体转换成字符串
- char *rendered=cJSON_Print(root);
4:删除
5:构建一个json结构体
- 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,"frame rate", 24);
转载地址:http://sagyi.baihongyu.com/