cJSON_ReplaceItemInArray()的使用demo
时间: 2023-09-16 19:13:38 浏览: 172
这是一个使用cJSON库中的cJSON_ReplaceItemInArray()函数的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
int main()
{
char *json_str = "{\"name\":\"John\",\"age\":30,\"cars\":[\"Ford\",\"BMW\",\"Fiat\"]}";
cJSON *root = cJSON_Parse(json_str);
if (root == NULL)
{
fprintf(stderr, "Error before: [%s]\n", cJSON_GetErrorPtr());
return 1;
}
cJSON *cars = cJSON_GetObjectItem(root, "cars");
if (cars == NULL || !cJSON_IsArray(cars))
{
fprintf(stderr, "Invalid JSON format, \"cars\" not found or not an array.\n");
cJSON_Delete(root);
return 1;
}
int index = 1;
cJSON *new_item = cJSON_CreateString("Tesla");
cJSON_ReplaceItemInArray(cars, index, 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字符串中的"cars"数组中的第2个元素(下标为1)替换为"Tesla",然后输出修改后的JSON字符串。
首先,使用`cJSON_Parse()`函数将输入的JSON字符串解析为cJSON对象。然后,使用`cJSON_GetObjectItem()`函数获取"cars"数组对象,如果该对象不存在或不是一个数组,则输出错误信息并退出程序。
接下来,定义要替换的元素的下标和新的cJSON对象。在本例中,要替换的下标为1(即第2个元素),新的cJSON对象是一个字符串类型的cJSON对象,它的值是"Tesla"。
最后,使用`cJSON_ReplaceItemInArray()`函数将"cars"数组中的指定元素替换为新的cJSON对象,然后使用`cJSON_PrintUnformatted()`函数将修改后的cJSON对象转换为JSON字符串,并输出到控制台。
注意,在程序结束时,应该使用`cJSON_Delete()`函数释放所有分配的cJSON对象,以及使用`free()`函数释放新的JSON字符串的内存。
阅读全文