在C語(yǔ)言中,如何將字符串轉(zhuǎn)換為JSON對(duì)象或數(shù)組對(duì)象呢?這個(gè)問題其實(shí)很簡(jiǎn)單,只要使用第三方庫(kù)即可。
在C語(yǔ)言中,我們可以使用cJSON這個(gè)開源的庫(kù)來實(shí)現(xiàn)字符串轉(zhuǎn)JSON對(duì)象或數(shù)組對(duì)象。 首先,我們需要安裝cJSON庫(kù),這個(gè)只需要下載源碼,解壓和編譯即可。
$ tar -xvf cJSON-1.7.14.tar.gz $ cd cJSON-1.7.14 $ make $ sudo make install
安裝完成之后,我們就可以在程序中使用cJSON庫(kù)了。它提供了一些API,我們可以通過這些API將字符串轉(zhuǎn)換為JSON對(duì)象或者數(shù)組對(duì)象。下面是一些基礎(chǔ)的API,供大家參考:
cJSON * cJSON_Parse(const char *value) cJSON * cJSON_ParseWithOpts(const char *value, const char **return_parse_end, int require_null_terminated) void cJSON_Delete(cJSON *item)
使用這些API,我們可以實(shí)現(xiàn)從字符串中解析JSON對(duì)象或數(shù)組對(duì)象,并且可以很方便地進(jìn)行遍歷或修改等操作。下面是一個(gè)示例代碼,演示了如何使用cJSON庫(kù)將一個(gè)字符串轉(zhuǎn)換為JSON對(duì)象或數(shù)組對(duì)象。
#include#include "cJSON.h" int main() { char *str = "{\"name\":\"張三\",\"age\":18}"; cJSON *root = cJSON_Parse(str); if (root) { cJSON *name = cJSON_GetObjectItem(root, "name"); cJSON *age = cJSON_GetObjectItem(root, "age"); if (name && age) { printf("name:%s, age:%d\n", name->valuestring, age->valueint); } cJSON_Delete(root); } str = "[{\"name\":\"張三\",\"age\":18},{\"name\":\"李四\",\"age\":20}]"; root = cJSON_Parse(str); if (root) { cJSON *item = NULL; cJSON_ArrayForEach(item, root) { cJSON *name = cJSON_GetObjectItem(item, "name"); cJSON *age = cJSON_GetObjectItem(item, "age"); if (name && age) { printf("name:%s, age:%d\n", name->valuestring, age->valueint); } } cJSON_Delete(root); } return 0; }
以上就是使用cJSON庫(kù)將字符串轉(zhuǎn)換為JSON對(duì)象或數(shù)組對(duì)象的方法。希望對(duì)大家有所幫助。