在進行后端開發時,使用JSON數據格式非常普遍。而在前端開發過程中,我們需要從獲取的JSON數據中獲取所需的值。下面介紹一種用C語言獲取JSON中值的方法。
// 定義一個示例JSON字符串 char json_str[] = "{ \"name\": \"Lily\", \"age\": 22, \"score\": [80, 90, 85] }"; // 解析JSON字符串 json_object *p_json_obj = json_tokener_parse(json_str); // 獲取name值 json_object *p_name_obj = NULL; if (json_object_object_get_ex(p_json_obj, "name", &p_name_obj)) { const char *p_name = json_object_get_string(p_name_obj); printf("name: %s\n", p_name); } // 獲取age值 json_object *p_age_obj = NULL; if (json_object_object_get_ex(p_json_obj, "age", &p_age_obj)) { int age = json_object_get_int(p_age_obj); printf("age: %d\n", age); } // 獲取score數組中第二個值 json_object *p_score_obj = NULL; if (json_object_object_get_ex(p_json_obj, "score", &p_score_obj)) { json_object *p_second_score_obj = json_object_array_get_idx(p_score_obj, 1); int second_score = json_object_get_int(p_second_score_obj); printf("score[1]: %d\n", second_score); } // 釋放JSON對象內存 json_object_put(p_json_obj);
在上述代碼中,我們使用了Json-c庫提供的json_tokener_parse()函數對JSON字符串進行解析,得到了一個json_object類型的指針。
之后使用json_object_object_get_ex()函數獲取所需的鍵值對應的json_object指針,再通過json_object_get_xxx()系列函數獲取它們的具體值。
需要注意的是,在獲取數組類型的值時,我們還需要使用json_object_array_get_idx()函數,通過下標獲取到某個元素對應的json_object指針。
最后,我們使用json_object_put()函數釋放內存,避免內存泄漏。