gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 00:35:07 25 4
gpt4 key购买 nike

当我的程序像这样在 json 中保存一些东西时:

 json_object_object_add(jObj_my, "cats/dogs", json_object_new_double(cats/dogs));

.json 文件中的结果是:
"cats\/dogs" : some_double_number

我怎样才能避免它打印 "\/"而不是 "/" ?

最佳答案

json-c 库在其 GitHub 存储库中的代码有一个标志可以转义 /可选的。

如果您不希望生成的字符串对此进行转义,请使用 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=%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 ,编译并运行它会产生:
$ 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 获取代码并编译它。

关于c - 带有 "/"字符的 json-c 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44588310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com