C JSON 反序列化是在將 JSON 格式的數據轉換為 C 語言中的數據結構時使用的一個重要技術。在現代編程中,JSON 格式經常被用作數據傳輸的工具,因此,在實際開發過程中,對于 C JSON 反序列化的掌握程度是非常重要的。
#include#include #include #include "cJSON.h" int main() { char *json_data = "{ \"name\": \"Lucy\", \"age\": 18, \"hobby\": [\"reading\", \"running\"] }"; cJSON *root = cJSON_Parse(json_data); cJSON *name = cJSON_GetObjectItem(root, "name"); cJSON *age = cJSON_GetObjectItem(root, "age"); cJSON *hobby = cJSON_GetObjectItem(root, "hobby"); int hobby_len = cJSON_GetArraySize(hobby); printf("Name: %s\nAge: %d\nHobbies: ", name->valuestring, age->valueint); for (int i = 0; i< hobby_len; ++i) { cJSON *item = cJSON_GetArrayItem(hobby, i); printf("%s", item->valuestring); if (i< hobby_len - 1) printf(", "); } cJSON_Delete(root); return 0; }
上述代碼中,我們使用了第三方庫 cJSON 來處理 JSON 數據。這個庫提供了一組功能強大且易于使用的 API,以便將 JSON 數據解析成對應的 C 數據類型。
在這個例子中,我們將一個 JSON 字符串作為輸入,調用 cJSON_Parse() 函數將其解析成 cJSON 根對象。接下來,我們使用 cJSON_GetObjectItem() 函數獲取 JSON 數據中的每個鍵值,并將其轉換為 C 數據類型。
最后,我們使用 cJSON_Delete() 函數刪除 cJSON 對象,釋放內存。這是至關重要的一步,因為 cJSON 對象的內存是在解析期間動態分配的,如果不釋放,則會造成內存泄漏。