gpt4 book ai didi

c++ - JSONCPP 正在向字符串添加额外的双引号

转载 作者:行者123 更新时间:2023-11-30 02:27:14 27 4
gpt4 key购买 nike

我在 JSONcpp 中有一个根,具有这样的字符串值。

Json::Value root;
std::string val = "{\"stringval\": \"mystring\"}";
Json::Reader reader;
bool parsingpassed = reader.parse(val, root, false);

现在,当我尝试使用这段代码检索该值时。

Json::StreamWriterBuilder builder;
builder.settings_["indentation"] = "";
std::string out = Json::writeString(builder, root["stringval"]);

理想情况下,这里的字符串应该包含:

"mystring"

而它给出的输出是这样的:

"\"mystring\"" \\you see this in debug mode if you check your string content 

顺便说一下,如果您使用 stdout 打印此值,它将打印如下内容::

"mystring" \\ because \" is an escape sequence and prints " in stdout

它应该在 stdout 中像这样打印:

mystring \\Expected output

知道在将 json 输出转换为 std::string 时如何避免这种输出吗?请避免推荐 fastwriter,因为它还添加了换行符并且它也弃用了 API。

约束:我不想通过使用字符串操作删除额外的\"来修改字符串,而是我愿意知道如何直接使用 JSONcpp 来完成此操作。

This is StreamWriterBuilder Reference code which I have used

Also found this solution, which gives optimal solution to remove extra quotes from your current string , but I don't want it to be there in first place

最佳答案

我也有这个问题,直到我意识到你必须使用 Json::Value 类访问器函数,例如root["stringval"] 将是 "mystring",但 root["stringval"].asString() 将是 mystring

关于c++ - JSONCPP 正在向字符串添加额外的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953251/

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