C是一種非常流行的編程語言,與JSON格式相結合使用時,我們可能會遇到一些問題。其中一個問題是如何解析不確定類型的JSON數據。
例如,我們可能有一個JSON數據,其中有一個值可以是字符串、數字、數組或對象。在C中,我們需要通過判斷類型來確定如何處理這個值。
{ "name": "John", "age": 30, "hobbies": ["reading", "swimming"], "address": { "street": "123 Main St", "city": "New York" } }
在這個例子中,我們可以看到name和address是對象,age是數字,hobbies是數組。為了解析這個不確定類型的JSON數據,我們需要根據鍵來檢查每個值的類型。
json_object *obj = json_tokener_parse(json_string); // 解析JSON數據 json_object_object_get_ex(obj, "name", &val); // 獲取對象中的值 const char* name = json_object_get_string(val); // 獲取字符串 json_object_object_get_ex(obj, "age", &val); int age = json_object_get_int(val); // 獲取數字 json_object_object_get_ex(obj, "hobbies", &val); if(json_object_is_type(val, json_type_array)) { // 判斷是否為數組 for(int i = 0; i< json_object_array_length(val); i++) { json_object* item = json_object_array_get_idx(val, i); // 獲取數組項 const char* hobby = json_object_get_string(item); // 獲取字符串 } } json_object_object_get_ex(obj, "address", &val); if(json_object_is_type(val, json_type_object)) { // 判斷是否為對象 json_object_object_get_ex(val, "city", &val); const char* city = json_object_get_string(val); // 獲取字符串 }
在這個例子中,我們使用json_object_object_get_ex函數獲取對象中的值,并使用json_object_get_*函數獲取值的類型。如果值不是我們期望的類型,我們可以使用json_object_is_type函數檢查類型。
總的來說,在C中解析不確定類型的JSON數據可能會有一些挑戰。但是,通過根據鍵來檢查每個值的類型并使用適當的函數來獲取值,我們可以成功解析這些數據。
上一篇vue買票占座位
下一篇python 相輸入流寫