在C語(yǔ)言中處理JSON字符串有很多方法,但是最常見(jiàn)的是使用第三方庫(kù),例如 cJSON。
cJSON是一個(gè)輕量級(jí)的庫(kù),可以方便地解析和生成JSON數(shù)據(jù)。以下是一個(gè)簡(jiǎn)單的例子:
#include "cJSON.h" int main() { const char* json_str = "{\"name\": \"Alice\", \"age\": 20}"; cJSON* root = cJSON_Parse(json_str); cJSON* name = cJSON_GetObjectItem(root, "name"); cJSON* age = cJSON_GetObjectItem(root, "age"); printf("%s is %d years old\n", name->valuestring, age->valueint); cJSON_Delete(root); return 0; }
在上面的示例中,我們將JSON字符串解析為一個(gè)cJSON對(duì)象,然后使用cJSON_GetObjectItem獲取屬性值,最后使用cJSON_Delete釋放所使用的內(nèi)存。
如果要生成JSON數(shù)據(jù),cJSON同樣可以很容易地實(shí)現(xiàn):
#include "cJSON.h" int main() { cJSON* root = cJSON_CreateObject(); cJSON_AddItemToObject(root, "name", cJSON_CreateString("Bob")); cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(30)); char* json_str = cJSON_PrintUnformatted(root); printf("%s\n", json_str); free(json_str); cJSON_Delete(root); return 0; }
在上面的示例中,我們創(chuàng)建了一個(gè)cJSON對(duì)象,并使用cJSON_AddItemToObject添加屬性,最后使用cJSON_PrintUnformatted將對(duì)象轉(zhuǎn)換為JSON字符串。在使用完后,需要使用free釋放內(nèi)存。
除了cJSON之外,還有其他的JSON解析和生成庫(kù),例如jansson、YAJL等。使用這些庫(kù)可以方便地處理JSON數(shù)據(jù),提高代碼的效率。