在使用C語言處理JSON對象時,我們常常需要從數組中取值。下面是一個示例的JSON對象:
{ "name": "張三", "age": 20, "hobbies": [ "籃球", "游泳", "唱歌" ] }
如果我們想要從hobbies數組中取出第二個元素“游泳”,可以使用以下代碼:
#include <stdio.h> #include <stdlib.h> #include <jansson.h> int main() { const char *json_str = "{\"name\":\"張三\",\"age\":20,\"hobbies\":[\"籃球\",\"游泳\",\"唱歌\"]}"; json_t *root; json_error_t error; root = json_loads(json_str, 0, &error); if (!root) { fprintf(stderr, "json error on line %d: %s\n", error.line, error.text); return 1; } json_t *hobbies = json_object_get(root, "hobbies"); if (json_array_size(hobbies) >1) { json_t *hobby = json_array_get(hobbies, 1); const char *hobby_str = json_string_value(hobby); printf("%s\n", hobby_str); } json_decref(root); return 0; }
代碼解析:
1. 定義一個JSON字符串,并使用json_loads()函數將其轉換成JSON對象。
const char *json_str = "{\"name\":\"張三\",\"age\":20,\"hobbies\":[\"籃球\",\"游泳\",\"唱歌\"]}"; json_t *root; json_error_t error; root = json_loads(json_str, 0, &error);
2. 使用json_object_get()函數獲取hobbies數組。
json_t *hobbies = json_object_get(root, "hobbies");
3. 使用json_array_size()函數獲取hobbies數組的大小,如果大于1,則使用json_array_get()函數獲取第二個元素。
if (json_array_size(hobbies) >1) { json_t *hobby = json_array_get(hobbies, 1); const char *hobby_str = json_string_value(hobby); printf("%s\n", hobby_str); }
4. 最后使用json_decref()函數釋放JSON對象。
json_decref(root);
使用以上代碼即可從數組中取出相應的值。