spt*_*025 2 c++ string jsoncpp
我在 JSONcpp 中有一个根,具有这样的字符串值。
Json::Value root;
std::string val = "{\"stringval\": \"mystring\"}";
Json::Reader reader;
bool parsingpassed = reader.parse(val, root, false);
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用这段代码检索该值时。
Json::StreamWriterBuilder builder;
builder.settings_["indentation"] = "";
std::string out = Json::writeString(builder, root["stringval"]);
Run Code Online (Sandbox Code Playgroud)
理想情况下,这里的字符串应该包含:
"mystring"
Run Code Online (Sandbox Code Playgroud)
而它给出的输出是这样的:
"\"mystring\"" \\you see this in debug mode if you check your string content
Run Code Online (Sandbox Code Playgroud)
顺便说一下,如果你使用stdout它打印这个值,将会打印如下内容:
"mystring" \\ because \" is an escape sequence and prints " in stdout
Run Code Online (Sandbox Code Playgroud)
它应该像这样打印stdout:
mystring \\Expected output
Run Code Online (Sandbox Code Playgroud)
知道如何在将 json 输出转换为 std::string 时避免这种输出吗?请避免建议使用 fastwriter,因为它还添加了换行符并且也弃用了 API。
约束:我不想通过字符串操作删除额外的 \" 来修改字符串,而是愿意知道如何直接使用 JSONcpp 来做到这一点。
我也遇到了这个问题,直到我意识到你必须使用Json::Value类访问器函数,例如root["stringval"]will be "mystring",但root["stringval"].asString()will be mystring。
| 归档时间: |
|
| 查看次数: |
3574 次 |
| 最近记录: |