JSON是一種輕量級的數據交換格式,常用于前后端數據傳輸。在C語言中,使用json-c庫可以方便地處理JSON對象。要遍歷JSON對象的屬性,可通過以下方法實現。
//讀取JSON對象 json_object *jobj = json_tokener_parse(json_string); //獲取對象的鍵值對數量 int size = (int)json_object_object_length(jobj); //獲取所有鍵 const char *key; json_object_object_foreach(jobj, key, val) { //獲取鍵對應的值 json_object *value = json_object_object_get(jobj, key); //獲取值的類型,并根據類型進行操作 enum json_type type = json_object_get_type(value); switch (type) { case json_type_int: //獲取int類型的值 int num = json_object_get_int(value); break; case json_type_double: //獲取double類型的值 double d = json_object_get_double(value); break; case json_type_boolean: //獲取bool類型的值 bool b = json_object_get_boolean(value); break; case json_type_string: //獲取string類型的值 const char *str = json_object_get_string(value); break; case json_type_null: //空值處理 break; case json_type_array: //處理數組元素 int i, len = json_object_array_length(value); for (i = 0; i< len; i++) { json_object *elem = json_object_array_get_idx(value, i); //獲取數組元素類型,并進行操作 enum json_type elem_type = json_object_get_type(elem); switch (elem_type) { //... } } break; } }
上述方法中,通過json_object_object_foreach函數遍歷JSON對象的每個鍵值對,并通過json_object_object_get函數獲取每個鍵對應的值。然后,通過json_object_get_type函數獲取值的類型,并根據類型進行進一步操作。對于數組類型的值,需通過json_object_array_length函數獲取數組元素數量,并通過json_object_array_get_idx函數獲取每個元素,并進行操作。