JSON -- c語言,資料交換
一、c語言獲取json中的資料
先要有cJOSN庫,兩個檔案分別是cJSON.c和cJSON.h。
二、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);