我正在使用jsoncpp,在使用其中一个Writer编写json消息时,我遇到了一个如何格式化json消息的问题。
例如:
root["name"] = "monkey";
std::cout << writer.write(root) << "\n";给出了如下格式的内容
{
"name" : "monkey"
}虽然我真的想要:
{"name":"monkey"}我看过文档,里面提到了setIndentLength(),但它们并没有出现在源文件中,所以它们可能已经被弃用了。
不管怎么说,有人知道怎么做吗?
发布于 2016-06-08 20:27:13
作为cdunn2001答案的扩展,不需要重写默认设置(.settings_)。你可以直接覆盖StreamWriterBuilder构建器的‘缩进’值:
Json::Value json = ...
Json::StreamWriterBuilder builder;
builder["commentStyle"] = "None";
builder["indentation"] = ""; //The JSON document is written in a single line
std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
writer->write(json, &std::cout);发布于 2011-09-26 23:54:21
如果您使用的是Jsoncpp1.1版本,则可以使用Json::FastWriter代替Json::StyledWriter或Json::Writer:
JSON文档被写在一行中。
它并不是为“人类”消费而设计的,但对于支持带宽有限的RPC这样的特性可能会很有用。
发布于 2015-02-15 08:46:28
FastWriter、StyledWriter、StyledStreamWriter和Writer是deprecated。使用StreamWriterBuilder,它会创建一个带有稍微不同的StreamWriter的API。这样使用它:
Json::StreamWriterBuilder builder;
builder.settings_["indentation"] = "";
std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
writer->write(root, &std::cout);https://stackoverflow.com/questions/7557258
复制相似问题