C語言中,可使用json-c庫來解析JSON字符串。對于一個JSON對象,我們可以使用循環來遍歷其中的元素。
#include <json-c/json.h>
int main() {
char *json_str = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
/* 解析JSON字符串 */
struct json_object *json_obj = json_tokener_parse(json_str);
/* 獲取JSON對象的成員個數 */
int obj_size = json_object_object_length(json_obj);
printf("JSON對象中包含 %d 個成員\n", obj_size);
/* 循環遍歷JSON對象 */
json_object_object_foreach(json_obj, key, val) {
printf("成員名:%s\t", key);
enum json_type val_type = json_object_get_type(val);
switch (val_type) {
case json_type_null:
printf("成員值:null\n");
break;
case json_type_boolean:
printf("成員值:%s\n", json_object_get_boolean(val) ? "true" : "false");
break;
case json_type_double:
printf("成員值:%.2f\n", json_object_get_double(val));
break;
case json_type_int:
printf("成員值:%d\n", json_object_get_int(val));
break;
case json_type_object:
printf("成員值:[JSON對象]\n");
break;
case json_type_array:
printf("成員值:[JSON數組]\n");
break;
case json_type_string:
printf("成員值:%s\n", json_object_get_string(val));
break;
default:
printf("成員值:[未知類型]\n");
break;
}
}
/* 釋放JSON對象 */
json_object_put(json_obj);
return 0;
}
以上是一段遍歷JSON對象的示例代碼。解析JSON字符串后,通過json_object_object_foreach函數遍歷其中的每一個成員,并輸出成員的名稱和值。
在輸出成員的值時,可以使用json_object_get_type函數獲取成員的值類型,再根據不同類型使用對應的json_object_get函數獲取具體的值。
此外,當成員的值為JSON對象或JSON數組時,需要額外處理,可以在switch語句中進行特殊處理。
在使用json-c庫時,還需要注意釋放JSON對象的內存,可以使用json_object_put函數釋放。
上一篇mysql雙主腦裂
下一篇python 形參類對象