最近在開發一個項目中,需要解析 JSON 數據,但是 C 語言并沒有直接支持 JSON 解析的庫,所以在經過一番搜索之后,找到了一個名為 cJSON 的庫。
使用 cJSON 庫可以很方便地解析 JSON 數據,并且也可以將 JSON 數據轉化為 C 語言中的結構體。
為了方便使用 cJSON 庫,我們可以將其封裝成一個 DLL 動態鏈接庫,這樣就可以在其他項目中直接調用封裝好的函數來完成 JSON 數據的解析了。
下面是封裝 cJSON 庫為 DLL 的代碼:
#include <cJSON.h> #include <Windows.h> __declspec(dllexport) cJSON* parseJson(char* jsonStr) { cJSON* json = cJSON_Parse(jsonStr); return json; } __declspec(dllexport) char* toJson(cJSON* json) { char* jsonString = cJSON_Print(json); return jsonString; } __declspec(dllexport) void releaseJson(cJSON* json) { cJSON_Delete(json); }
上面的代碼中,我們創建了三個函數來實現 JSON 解析:
- parseJson:將字符串解析成 cJSON 結構。
- toJson:將 cJSON 結構轉化為字符串。
- releaseJson:釋放 cJSON 結構所占用的內存。
使用 cJSON 庫解析 JSON 數據非常簡單,只需要像下面這樣調用即可:
char* jsonStr = "{\"name\":\"Tom\",\"age\":20}"; cJSON* json = parseJson(jsonStr); char* name = cJSON_GetObjectItem(json, "name")->valuestring; int age = cJSON_GetObjectItem(json, "age")->valueint; printf("name: %s\nage: %d\n", name, age); releaseJson(json);
上面的代碼展示了如何將一個包含 name 和 age 屬性的 JSON 字符串解析成 cJSON 結構,并且獲取其中的屬性值。
通過封裝 cJSON 庫為 DLL 動態鏈接庫,我們可以方便地在其他項目中使用 JSON 數據,并且避免重復開發。