JSON 是一種輕量級的數(shù)據(jù)交換格式,因其簡潔、易讀和易解析而被廣泛應(yīng)用,而在 C 語言中解析 JSON 數(shù)據(jù)也是常見的任務(wù)。
C 語言本身沒有內(nèi)置的 JSON 解析庫,但可以使用第三方庫來解析 JSON 數(shù)據(jù)。其中, cJSON 是一個非常流行的跨平臺(包括 Windows、Linux、macOS 等)的 JSON 解析庫。
以下是使用 cJSON 解析 JSON 數(shù)據(jù)的示例代碼:
#include <stdio.h> #include <cJSON.h> int main() { char* json_data = "{\"name\":\"Lucas\", \"age\":25}"; // 待解析的 JSON 數(shù)據(jù) cJSON* root = cJSON_Parse(json_data); // 解析 JSON 數(shù)據(jù) if (root == NULL) { // 解析失敗 printf("Failed to parse JSON data!\n"); return 1; } // 讀取 JSON 數(shù)據(jù)中的鍵值 cJSON* name = cJSON_GetObjectItem(root, "name"); cJSON* age = cJSON_GetObjectItem(root, "age"); // 輸出解析結(jié)果 printf("Name: %s\n", name->valuestring); printf("Age: %d\n", age->valueint); cJSON_Delete(root); // 釋放 cJSON 對象 return 0; }
在上述示例代碼中,我們使用 cJSON_Parse 函數(shù)來解析 JSON 數(shù)據(jù),它的返回值是一個 cJSON 對象。在解析成功后,我們可以使用 cJSON_GetObjectItem 函數(shù)來讀取 JSON 數(shù)據(jù)中的鍵值,并使用 cJSON 對象的相關(guān)屬性來獲取鍵和值。
最后,在程序結(jié)束前記得調(diào)用 cJSON_Delete 函數(shù)來釋放 cJSON 對象,防止內(nèi)存泄漏。
使用 cJSON 解析 JSON 數(shù)據(jù)的過程可能會稍微有些抽象和復(fù)雜,但是一旦掌握了它的基本用法,就可以輕松解析 JSON 數(shù)據(jù)并獲取所需的信息。