在C語言開發中,經常需要處理JSON格式的數據。在將JSON格式的字符串轉成對象時,我們可以使用 cJSON 庫來實現。
#include "cJSON.h" #include <stdio.h> int main() { char *json_str = "{ \"name\":\"Tom\", \"age\":18 }"; cJSON *json_obj = cJSON_Parse(json_str); if (json_obj == NULL) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return 1; } const cJSON *name = cJSON_GetObjectItemCaseSensitive(json_obj, "name"); const cJSON *age = cJSON_GetObjectItemCaseSensitive(json_obj, "age"); printf("%s is %d years old.\n", name->valuestring, age->valueint); cJSON_Delete(json_obj); return 0; }
在這個示例中,我們首先定義一個字符串 json_str,它包含了 JSON 格式的數據。然后調用 cJSON_Parse 函數將字符串轉換成 cJSON 對象。該函數會自動為我們分配一個 cJSON 結構體并將數據轉換過來,同時返回一個指向該結構體的指針。
我們可以通過 cJSON_GetObjectItemCaseSensitive 函數獲取到該結構體中的屬性,也就是 JSON 中的 key-value 鍵值對。注意,該函數使用的是大小寫敏感的比較,因此需要保證輸入參數的大小寫與 JSON 字符串中保持一致。
示例中,我們獲取 key 為 "name" 和 "age" 的屬性值,分別為字符和整型。然后輸出這些值,并最后調用 cJSON_Delete 函數釋放 cJSON 對象的內存。