在C中,要從JSON數組中取值,我們需要使用第三方庫來解析JSON數據。其中比較常用的解析庫有cJSON、Jansson等等。
假設我們有一個以下結構的JSON數組:
[ { "name": "Alice", "age": 25, "gender": "female" }, { "name": "Bob", "age": 30, "gender": "male" }, { "name": "Charlie", "age": 35, "gender": "male" } ]
使用cJSON庫可以很方便地從這個JSON數組中取值。
我們可以先解析JSON數組:
cJSON *root = cJSON_Parse(json_array);
其中,參數json_array是指JSON數組的字符串形式。
接著,我們可以通過循環來遍歷JSON數組中的每一個元素:
cJSON *item = NULL; cJSON_ArrayForEach(item, root) { // 從item中取值 }
在循環中,我們用cJSON_ArrayForEach來遍歷JSON數組中的每一個元素,用item來指向當前元素。
接下來,我們可以通過cJSON_GetObjectItem來獲取元素中的各個屬性值。例如,要獲取name屬性的值,可以這樣寫:
const char *name = cJSON_GetObjectItem(item, "name")->valuestring;
其中,第一個參數item為當前元素,第二個參數"name"為要獲取的屬性名。
如果要獲取age屬性的值,則可以這樣寫:
int age = cJSON_GetObjectItem(item, "age")->valueint;
其中,valueint為cJSON中的一個成員變量,用來表示json數字類型的值。
總的來說,通過cJSON庫,我們可以快速、簡便地從JSON數組中獲取我們需要的值。