2024年8月24日发(作者:)

cjson_duplicate用法

cjson_duplicate 是一个辅助函数,用来复制一个 cjson 的对象。

具体用法如下:

```c

cJSON *cjson_duplicate(cJSON *item, int recurse);

```

参数:

- `item`:要复制的 cJSON 对象。

- `recurse`:是否递归复制其子对象,可选值为 0 或 1。如果设

置为 1,则会递归复制 item 的子对象;如果设置为 0,则只复

制 item。

返回值:

- 复制后的 cJSON 对象。如果复制成功,则返回新的 cJSON

对象;如果复制失败(如内存分配失败),则返回 NULL。

示例代码:

```c

#include

#include "cJSON.h"

int main() {

// 创建 cjson 对象

cJSON *root = cJSON_CreateObject();

cJSON *array = cJSON_CreateArray();

cJSON *item1 = cJSON_CreateString("item1");

cJSON *item2 = cJSON_CreateString("item2");

// 将 item1 和 item2 放入 array 中

cJSON_AddItemToArray(array, item1);

cJSON_AddItemToArray(array, item2);

// 将 array 放入 root 中

cJSON_AddItemToObject(root, "array", array);

// 复制 cjson 对象

cJSON *duplicate = cjson_duplicate(root, 1);

// 输出复制后的结果

char *json_str = cJSON_Print(duplicate);

printf("Duplicate JSON: %sn", json_str);

// 释放资源

cJSON_Delete(root);

cJSON_Delete(duplicate);

free(json_str);

return 0;

}

```

运行以上代码会输出复制后的 cJSON 对象的 JSON 字符串:

```

Duplicate JSON: {"array":["item1","item2"]}

```

注意:在使用 cjson_duplicate 函数复制 cJSON 对象后,需要

手动调用 cJSON_Delete 函数释放所复制的 cJSON 对象所占用

的内存。