C語言中處理JSON數據時,有時需要刪除其中部分數據。以下是一個示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <jansson.h>
void delete_json_value(json_t *json_obj, const char *key) {
if (json_is_object(json_obj)) {
void *iter = json_object_iter(json_obj);
while (iter) {
const char *iter_key = json_object_iter_key(iter);
json_t *iter_value = json_object_iter_value(iter);
if (strcmp(iter_key, key) == 0) {
json_object_del(json_obj, iter_key);
break;
}
delete_json_value(iter_value, key);
iter = json_object_iter_next(json_obj, iter);
}
}
else if (json_is_array(json_obj)) {
size_t size = json_array_size(json_obj);
for (size_t i = 0; i< size; i++) {
json_t *array_value = json_array_get(json_obj, i);
delete_json_value(array_value, key);
}
}
}
int main() {
json_t *json_obj = json_object();
json_object_set_new(json_obj, "name", json_string("Tom"));
json_object_set_new(json_obj, "age", json_integer(20));
json_object_set_new(json_obj, "gender", json_string("male"));
json_t *json_hobbies = json_array();
json_array_append_new(json_hobbies, json_string("reading"));
json_array_append_new(json_hobbies, json_string("swimming"));
json_object_set_new(json_obj, "hobbies", json_hobbies);
printf("Before deletion:\n%s\n", json_dumps(json_obj, JSON_INDENT(2)));
delete_json_value(json_obj, "gender");
printf("After deletion:\n%s\n", json_dumps(json_obj, JSON_INDENT(2)));
json_decref(json_obj);
return 0;
}
以上代碼通過遞歸方式遍歷JSON對象,如果找到了key,就調用json_object_del方法刪除找到的鍵值對;否則,遞歸進入json中的對象或數組里查找。這里我們刪除了gender這個鍵值對。
在C語言中,使用jansson庫可以方便地讀寫JSON數據。它提供了對JSON的完整支持,包括創建、修改、刪除、遍歷等操作。在處理JSON數據時使用jansson庫可以大大簡化代碼,提高開發效率。
上一篇vue data清空
下一篇python 最少錢修路