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指针指向的值;注意释放之前的内存,否则会导致内存泄漏;

GitHub 加速计划 / cj / cJSON
10.45 K
3.16 K
下载
Ultralightweight JSON parser in ANSI C
最近提交(Master分支:2 个月前 )
424ce4ce This reverts commit 5b502cdbfb21fbe5f6cf9ffbd2b96e4281a741e6. Related to #860 4 个月前
32497300 - 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐