cJSON是一個輕巧而強大的C語言JSON解析器,可將JSON數據轉換為C語言結構并將C語言結構轉換回JSON數據。使用cJSON處理JSON數據的過程非常簡單,首先將JSON數據加載到cJSON對象中,然后使用cJSON API處理JSON對象。
#include "cJSON.h" int main() { const char* json_string = "{\"name\":\"Tom\",\"age\":18,\"sex\":\"male\",\"hobby\":[\"reading\",\"swimming\"]}"; cJSON* root = cJSON_Parse(json_string); //將JSON數據加載到cJSON對象中 if (root == NULL) { printf("Parse Error: %s\n", cJSON_GetErrorPtr()); return -1; } cJSON* name = cJSON_GetObjectItemCaseSensitive(root, "name"); //獲取對象中的屬性 cJSON* age = cJSON_GetObjectItemCaseSensitive(root, "age"); cJSON* sex = cJSON_GetObjectItemCaseSensitive(root, "sex"); printf("name: %s, age: %d, sex: %s\n", name->valuestring, age->valueint, sex->valuestring); cJSON* hobby_array = cJSON_GetObjectItemCaseSensitive(root, "hobby"); //獲取數組 int hobby_count = cJSON_GetArraySize(hobby_array); //獲取數組中元素個數 printf("hobbies: ["); for (int i = 0; i< hobby_count; i++) { cJSON* hobby_item = cJSON_GetArrayItem(hobby_array, i); printf("%s", hobby_item->valuestring); if (i != hobby_count - 1) { printf(", "); } } printf("]\n"); cJSON_Delete(root); //釋放cJSON對象內存 return 0; }
在代碼中,我們首先定義了一個JSON字符串,這里用到了C語言中的轉義符,對于特殊的字符如雙引號、反斜杠等需要進行轉義。接著我們通過cJSON_Parse函數將JSON字符串加載到cJSON對象中,如果解析失敗會返回NULL,此時可通過cJSON_GetErrorPtr函數獲取錯誤信息。接下來通過cJSON_GetObjectItemCaseSensitive函數獲取cJSON對象中的屬性值,通過cJSON_GetArrayItem函數獲取數組中的元素值。最后通過cJSON_Delete函數釋放cJSON對象內存。