cJSON_ReplaceItemInObject的使用
时间: 2023-12-02 22:04:47 浏览: 359
`cJSON_ReplaceItemInObject()`函数用于替换一个cJSON对象中指定key对应的值。其函数原型如下:
```c
void cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem);
```
其中,`object`是要替换值的cJSON对象,`string`是要替换的key的名称,`newitem`是新的cJSON对象,它将替换原来的值。
以下是一个使用`cJSON_ReplaceItemInObject()`函数的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
int main()
{
char *json_str = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
cJSON *root = cJSON_Parse(json_str);
if (root == NULL)
{
fprintf(stderr, "Error before: [%s]\n", cJSON_GetErrorPtr());
return 1;
}
cJSON *city = cJSON_GetObjectItem(root, "city");
if (city == NULL || !cJSON_IsString(city))
{
fprintf(stderr, "Invalid JSON format, \"city\" not found or not a string.\n");
cJSON_Delete(root);
return 1;
}
cJSON *new_item = cJSON_CreateString("Los Angeles");
cJSON_ReplaceItemInObject(root, "city", new_item);
char *new_json_str = cJSON_PrintUnformatted(root);
printf("New JSON string:\n%s\n", new_json_str);
cJSON_Delete(root);
free(new_json_str);
return 0;
}
```
这个程序的功能是将输入的JSON字符串中的"city"键对应的值从"New York"替换为"Los Angeles",然后输出修改后的JSON字符串。
首先,使用`cJSON_Parse()`函数将输入的JSON字符串解析为cJSON对象。然后,使用`cJSON_GetObjectItem()`函数获取"city"键对应的值,如果该值不存在或不是一个字符串,则输出错误信息并退出程序。
接下来,创建一个新的cJSON对象,它是一个字符串类型的cJSON对象,其值是"Los Angeles"。然后,使用`cJSON_ReplaceItemInObject()`函数将"city"键对应的值替换为新的cJSON对象。
最后,使用`cJSON_PrintUnformatted()`函数将修改后的cJSON对象转换为JSON字符串,并输出到控制台。
注意,在程序结束时,应该使用`cJSON_Delete()`函数释放所有分配的cJSON对象,以及使用`free()`函数释放新的JSON字符串的内存。
阅读全文