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