欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c json獲取中間的值

洪振霞2年前9瀏覽0評論

在使用C語言操作JSON格式的數(shù)據(jù)時,我們可能會遇到只想獲取JSON數(shù)據(jù)中某一段中間值的需求。下面介紹一下如何使用C操作JSON數(shù)據(jù)獲取中間值。

假設(shè)我們有如下JSON格式數(shù)據(jù):

{
"name": "Tom",
"age": 20,
"school": {
"name": "ABC University",
"location": "Beijing"
},
"hobbies": ["reading", "traveling", "photography"]
}

現(xiàn)在,我們需要獲取"ABC University",也就是school對象中的name值。下面是操作的代碼:

// 引入cJSON頭文件
#include "cJSON.h"
// 獲取JSON字符串
const char* jsonStr = "{\"name\": \"Tom\",\"age\": 20,\"school\": {\"name\": \"ABC University\",\"location\": \"Beijing\"},\"hobbies\": [\"reading\", \"traveling\", \"photography\"]}";
// 解析JSON字符串
cJSON* root = cJSON_Parse(jsonStr);
if (NULL == root) {
printf("Fail to parse JSON string!%s", cJSON_GetErrorPtr());
return -1;
}
// 獲取school對象
cJSON* schoolObj = cJSON_GetObjectItem(root, "school");
// 獲取name對象
cJSON* nameObj = cJSON_GetObjectItem(schoolObj, "name");
// 獲取name對象的值
const char* nameValue = nameObj->valuestring;
printf("The school name is: %s", nameValue);
// 釋放cJSON的空間
cJSON_Delete(root);

上述代碼首先通過cJSON_Parse()函數(shù)將JSON字符串解析成cJSON對象。然后,使用cJSON_GetObjectItem()函數(shù)獲取school對象和name對象。最后,通過nameObj->valuestring獲取name對象的值并輸出。對于使用完畢的cJSON對象,需要使用cJSON_Delete()函數(shù)釋放其占用的空間。

需要注意的是,這里的nameValue是一個const char*類型的字符串,需要使用%s占位符進(jìn)行輸出。