在C語言中查找和替換JSON數據中的鍵值對可以通過使用第三方庫或手動解析實現。使用第三方庫可以減少代碼工作量并提高效率。以下是使用第三方庫jansson來查找和替換JSON數據中鍵值對的示例代碼:
#include <jansson.h> #include <stdio.h> int main() { const char* json_str = "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}"; json_error_t error; json_t* json_obj = json_loads(json_str, 0, &error); if (json_obj) { json_t* json_name = json_object_get(json_obj, "name"); if (json_name) { const char* name = json_string_value(json_name); printf("Name: %s\n", name); json_object_set_new(json_obj, "name", json_string("Jane")); printf("Updated JSON string: %s\n", json_dumps(json_obj, JSON_ENCODE_ANY)); } json_decref(json_obj); } else { fprintf(stderr, "Failed to parse JSON: %s\n", error.text); } return 0; }
代碼中使用json_loads函數將JSON字符串解析為json_t對象。然后使用json_object_get函數按鍵名獲取要查找的鍵值對,如果找到則可以使用json_string_value獲取對應的值。使用json_object_set_new函數可以替換鍵值對中的值,最后使用json_dumps函數將更新后的json_t對象轉換為JSON字符串。
如果需要在JSON對象的嵌套層級中查找和替換鍵值對,則可以使用json_object_iter()和json_object_iter_next()函數進行迭代操作。以下是示例代碼:
json_t* json_obj = json_loads("{\"person\":{\"name\":\"John\",\"age\":30}}", 0, &error); if (json_obj) { json_t* person_obj = json_object_get(json_obj, "person"); if (person_obj) { json_t* json_name = NULL; const char* name = NULL; void *iter = json_object_iter(person_obj); while (iter) { const char* key = json_object_iter_key(iter); if (strcmp(key, "name") == 0) { json_name = json_object_iter_value(iter); name = json_string_value(json_name); json_object_set_new(person_obj, "name", json_string("Jane")); break; } iter = json_object_iter_next(person_obj, iter); } printf("Updated JSON string: %s\n", json_dumps(json_obj, JSON_ENCODE_ANY)); } json_decref(json_obj); }
代碼中使用json_object_iter()獲取JSON對象的第一個鍵值對迭代器,然后使用json_object_iter_key()和json_object_iter_value()函數獲取當前迭代器所指向的鍵和值。通過比較鍵名和指定的鍵名相同則使用json_object_set_new()函數替換鍵值對中的值。最后使用json_dumps()函數將更新后的json_t對象轉換為JSON字符串。
上一篇vue eol-last
下一篇c語言用的什么json