在C語言中,使用第三方庫提供JSON解析功能是一種較為常見的方式。這里介紹一個叫做 cJSON 的開源庫,其主要特點是使用簡單,且支持不同平臺的編譯。
首先需要下載cJSON,可以在Github上找到它的源代碼。這里直接給出鏈接:https://github.com/DaveGamble/cJSON
下載完畢后,可以將cJSON.h和cJSON.c兩個文件復制到你的工程目錄下,并添加到你的makefile文件中。以下是一個解析JSON字符串的示例代碼:
#include <stdio.h>
#include <cJSON.h>
char *jsonStr = "{\"name\":\"Tom\",\"age\":18,\"isStudent\":true}";
int main() {
cJSON *root = cJSON_Parse(jsonStr);
cJSON *name = cJSON_GetObjectItem(root, "name");
cJSON *age = cJSON_GetObjectItem(root, "age");
cJSON *isStudent = cJSON_GetObjectItem(root, "isStudent");
printf("name: %s, age: %d, isStudent: %d\n", cJSON_GetStringValue(name), cJSON_GetNumberValue(age), cJSON_IsTrue(isStudent));
cJSON_Delete(root);
return 0;
}
這份代碼可以解析一個JSON字符串,并從中提取出 "name" "age" "isStudent" 三個鍵對應的值,并打印到控制臺上。其中,我們可以通過 cJSON_Parse 函數來將字符串轉換成cJSON結構體,然后通過 cJSON_GetObjectItem 函數來獲取其中對應的值。需要注意的是,對于不同類型的值,我們需要使用不同的宏來獲取其實際值,例如 cJSON_GetStringValue 用于獲取字符串類型的值,cJSON_GetNumberValue 用于獲取數字類型的值,cJSON_IsTrue 用于獲取布爾類型的值。
當然,實際應用中,我們不一定需要手動寫出所有的代碼,cJSON庫提供了很多便捷的函數,可以幫助我們快速識別JSON字符串中的鍵值對,并進行相應的處理。以上示例只是為了讓讀者初步了解cJSON庫的使用方法。