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

JSONCPP is adding extra double quotes to string

我在 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

好吧,这个问题在彻底解释后也没有得到答案,我不得不通过 JSONCPP apis 和文档一段时间。

到目前为止,我还没有找到任何 api 来处理这种额外添加双引号的情况。 现在从他们的 wikibook 中我可以看出一些转义序列可能出现在 String 中。它是设计好的,他们没有提到确切的场景。

   \" - quote
   \ - backslash
   \/ - slash
   \n - newline
   \t - tabulation
   \r - carriage return
   \b - backspace
   \f - form feed
   \uxxxx , where x is a hexadecimal digit - any 2-byte symbol

Link Explaining what all extra Escape Sequence might come in String

遇到此问题的任何人如果发现同一问题的更好解释,请随时 post 您的 answer.Till 然后我想只有字符串操作是删除那些额外转义序列的选项。 .

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