C JSON轉換成dynamic是一種常見的數據類型轉換方式。當我們需要將一個C JSON對象轉換成動態數據類型時,這個轉換就非常有用了。
#include <stdio.h> #include <json-c/json.h> int main() { struct json_object* json_obj; json_object* dynamic_obj; json_object* nested_obj; json_obj = json_tokener_parse("{\"key\":\"value\",\"nested\":{\"key2\":\"value2\"}}"); dynamic_obj = json_object_new_object(); json_object_object_foreach(json_obj, key, val) { nested_obj = json_object_new_object(); if (json_object_is_type(val, json_type_object)) { json_object_object_foreach(val, nested_key, nested_val) { json_object_object_add(nested_obj, nested_key, nested_val); } json_object_object_add(dynamic_obj, key, nested_obj); } else { json_object_object_add(dynamic_obj, key, val); } } printf("%s\n", json_object_to_json_string(dynamic_obj)); json_object_put(json_obj); json_object_put(dynamic_obj); return 0; }
上述代碼中,我們首先使用json_tokener_parse函數從JSON字符串中解析出一個C JSON對象json_obj。接下來,我們創建了一個新的dynamic對象dynamic_obj,并使用json_object_object_foreach函數遍歷json_obj中的每個鍵值對。
如果遍歷到的值val是一個JSON對象,我們就創建一個新的nested_obj,并將nested_obj添加到dynamic_obj中的相應鍵處。否則,我們直接將val添加到相應的鍵處。最后,我們打印輸出dynamic對象的JSON字符串表達式,并釋放我們創建的對象。
上一篇python 文件操作庫
下一篇vue Cnblog