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

c json中取得指定節點

夏志豪2年前7瀏覽0評論

C語言中的JSON解析庫有很多種,其中比較常用的就是cJSON。我們在使用cJSON解析JSON格式的字符串時,通常需要取得指定節點的值,本文就來介紹一下如何在cJSON中取得指定節點的方法。

首先,我們需要將JSON格式的字符串解析成cJSON的結構體。可以使用cJSON_Parse函數進行解析,將解析結果存儲在cJSON結構體中。例如,我們可以解析以下JSON格式的字符串:

{
"name": "小明",
"age": 18,
"sex": "男"
}

使用cJSON_Parse函數解析的代碼如下:

char* jsonStr = "{\"name\":\"小明\",\"age\":18,\"sex\":\"男\"}";
cJSON* root = cJSON_Parse(jsonStr);

解析完成后,我們就可以使用cJSON提供的函數訪問cJSON結構體中的節點了。cJSON結構體中的節點可以理解成一個個鍵值對。每個鍵值對包含一個“key”和一個“value”。

訪問一個節點的方法是,首先通過cJSON_GetObjectItem函數獲取節點的鍵值對,然后再通過cJSON_GetString、cJSON_GetNumber等函數取得節點值的具體內容。例如,我們要獲取上面的JSON字符串中的“name”節點,代碼如下:

cJSON* nameNode = cJSON_GetObjectItem(root, "name");
char* name = cJSON_GetString(nameNode);
printf("name is %s\n", name);

上面的代碼中,cJSON_GetObjectItem函數用于獲取“name”節點的鍵值對,然后使用cJSON_GetString函數取得節點的字符串類型的值。同樣的,如果我們想獲取“age”節點的整數類型的值,可以這樣寫:

cJSON* ageNode = cJSON_GetObjectItem(root, "age");
int age = cJSON_GetNumber(ageNode);
printf("age is %d\n", age);

在cJSON的結構體中,可能會存在嵌套節點的情況,因此我們需要使用類似于樹形結構的方式遍歷cJSON結構體,取得指定節點的值。例如,如果我們要獲取以下JSON字符串中“company”的“name”節點值:

{
"name": "王五",
"age": 22,
"sex": "男",
"company": {
"name": "阿里巴巴",
"address": "杭州市濱江區"
}
}

我們就需要先獲取“company”節點的值,然后再獲取“name”節點的值。代碼如下:

cJSON* companyNode = cJSON_GetObjectItem(root, "company");
cJSON* companyNameNode = cJSON_GetObjectItem(companyNode, "name");
char* companyName = cJSON_GetString(companyNameNode);
printf("company name is %s\n", companyName);

以上就是cJSON中取得指定節點的方法。需要注意的是,在取得節點值之前,務必使用cJSON_GetObjectItem函數判斷對應節點是否存在,否則會引發訪問NULL指針等問題。