首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有"/“字符的json-c字符串

带有"/“字符的json-c字符串
EN

Stack Overflow用户
提问于 2017-06-16 19:35:49
回答 1查看 2.2K关注 0票数 3

当我的程序将一些东西保存在json中时,如下所示:

代码语言:javascript
复制
 json_object_object_add(jObj_my, "cats/dogs", json_object_new_double(cats/dogs));

.json文件中的结果为:

代码语言:javascript
复制
"cats\/dogs" : some_double_number

如何避免打印"\/"而不是"/"

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-16 23:12:49

json-c库在其GitHub存储库中的代码有一个标志,用于使/转义成为可选的。

如果不希望生成的字符串对此进行转义,请使用JSON_C_TO_STRING_NOSLASHESCAPE标志,如下所示:

代码语言:javascript
复制
#include <stdio.h>
#include <json.h>

int main(int argc, char **argv)
{
    json_object *my_string;

    my_string = json_object_new_string("/foo/bar/baz");
    printf("my_string=%s\n", json_object_get_string(my_string));
    printf("my_string.to_string()=%s\n", json_object_to_json_string(my_string));
    printf("my_string.to_string(NOSLASHESCAPE)=%s\n", json_object_to_json_string_ext(my_string, JSON_C_TO_STRING_NOSLASHESCAPE));
    json_object_put(my_string);

    return 0;
}

改编自https://github.com/json-c/json-c/blob/master/tests/test1.c#L155的示例

将其保存在slashtest.c中,编译并运行会产生以下结果:

代码语言:javascript
复制
$ gcc -Wall slashtest.c -L/usr/local/lib -l:libjson-c.a -I/usr/local/include/json-c
$ ./a.out
my_string=/foo/bar/baz
my_string.to_string()="\/foo\/bar\/baz"
my_string.to_string(NOSLASHESCAPE)="/foo/bar/baz"

在JSON中转义/是合法的,可以说是有用的,请参阅这篇文章:JSON: why are forward slashes escaped?

请注意,这个标志是在2015年添加到库的代码中的,但不知何故,在2016年6月7日发布的最新json-c-0.12.1版本中并没有进行更改。我不知道为什么。

因此,要使用它,您必须从GitHub获取代码并对其进行编译。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44588310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档