在使用C語言處理JSON數據時,有時會遇到不想序列化某些字段的情況。C語言中可以使用第三方庫cJSON來完成對JSON數據的解析和生成。在cJSON庫中,可以使用cJSON_AddNullToObject()函數來實現不添加某個字段,但是仍然會序列化該字段。
cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "Tom"); cJSON_AddNullToObject(root, "age"); // 不添加age字段 char *json_str = cJSON_PrintUnformatted(root); // 生成json字符串 cJSON_Delete(root); // 釋放內存
當我們生成JSON字符串時,輸出結果會包含age字段:
{ "name":"Tom", "age":null }
如果不想序列化age字段,則需要在生成JSON字符串前手動刪除該字段:
cJSON_DeleteItemFromObject(root, "age"); // 刪除age字段 char *json_str = cJSON_PrintUnformatted(root); // 生成json字符串 cJSON_Delete(root); // 釋放內存
現在生成的JSON字符串將不包含age字段:
{ "name":"Tom" }
通過手動刪除字段的方式,我們可以在C語言中實現不序列化某些字段的功能。