当我的程序在json中保存一些东西时,如下所示:
json_object_object_add(jObj_my, "cats/dogs", json_object_new_double(cats/dogs));
.json 文件中的结果是:
"cats/dogs" : some_double_number
如何避免打印"/"
而不是"/"
?
GitHub 存储库中的 json-c 库代码有一个标志,使转义/
可选。
如果不希望生成的字符串对此进行转义,请使用JSON_C_TO_STRING_NOSLASHESCAPE
标志,如下所示:
#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=%sn", json_object_get_string(my_string));
printf("my_string.to_string()=%sn", json_object_to_json_string(my_string));
printf("my_string.to_string(NOSLASHESCAPE)=%sn", 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
中,编译并运行它会产生:
$ 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:为什么正斜杠被转义?
请注意,此标志是在 2015 年添加到库代码中的,但不知何故,在 2016 年 6 月 7 日发布的最新当前 json-c-0.12.1 版本中,更改并未实现。我不知道为什么。
因此,要使用它,您必须从GitHub获取代码并对其进行编译。