CJSON API库中并未实现修改string的功能接口,因此手动编写一个,代码如下:
static void cJSON_add_string_to_object(cJSON * const object, const char * const name, const char * const string)
{
cJSON *item;
if (object == NULL || name == NULL || string == NULL)
{
return;
}
item = cJSON_GetObjectItemCaseSensitive(object, name);
// item not exist
if (item == NULL)
{
cJSON_AddStringToObject(object, name, string); // just addstring
}
// item exist
else
{
cJSON_free(item->valuestring); // free present valuestring
item->valuestring = strdup(string); // malloc and init new valuestring
}
}
最主要是else分支代码,实现新的valuestring指针指向的值;注意释放之前的内存,否则会导致内存泄漏;