在程序開發(fā)中,我們經(jīng)常需要將一些數(shù)據(jù)序列化為 JSON 格式,方便傳輸、存儲和處理。C 語言也有各種 JSON 庫可供使用,其中比較常用的包括 cJSON、Jansson 和 Json-c 等。
對于這些庫,常見的序列化操作是將 C 語言中的結(jié)構(gòu)體轉(zhuǎn)換為對應(yīng)的 JSON 字符串。在 cJSON 中,可以使用 cJSON_Print() 函數(shù)將 cJSON 對象序列化為 JSON 字符串,如下:
cJSON *root; char *json_str; root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "Alice"); cJSON_AddNumberToObject(root, "age", 25); json_str = cJSON_Print(root); printf("JSON string: %s\n", json_str); free(json_str); cJSON_Delete(root);
在 Jansson 中,可以使用 json_dumps() 函數(shù)將 json_t 對象序列化為 JSON 字符串,如下:
json_t *root; char *json_str; root = json_object(); json_object_set_new(root, "name", json_string("Alice")); json_object_set_new(root, "age", json_integer(25)); json_str = json_dumps(root, JSON_COMPACT); printf("JSON string: %s\n", json_str); free(json_str); json_decref(root);
在 Json-c 中,可以使用 json_object_to_json_string() 函數(shù)將 json_object 對象序列化為 JSON 字符串,如下:
json_object *root; char *json_str; root = json_object_new_object(); json_object_object_add(root, "name", json_object_new_string("Alice")); json_object_object_add(root, "age", json_object_new_int(25)); json_str = (char*)json_object_to_json_string(root); printf("JSON string: %s\n", json_str); free(json_str); json_object_put(root);
需要注意的是,在使用這些序列化函數(shù)時(shí),需要手動(dòng)釋放返回的 JSON 字符串和 cJSON/json_t/json_object 對象,以避免內(nèi)存泄漏。
上一篇c json 對象的屬性
下一篇vue axios失效