jsoncpp格式化问题

Kai*_*aan 10 c++ json jsoncpp

我正在使用jsoncpp,我在使用其中一个Writers编写json消息时遇到了问题.

例如:

root["name"] = "monkey";
std::cout << writer.write(root) << "\n";
Run Code Online (Sandbox Code Playgroud)

给了我这样格式的东西

{
    "name" : "monkey"
}
Run Code Online (Sandbox Code Playgroud)

虽然我真的想要:

{"name":"monkey"}
Run Code Online (Sandbox Code Playgroud)

我查看了文档并提到setIndentLength()但是它们没有出现在源文件中,所以可能它们已经被弃用了.

无论如何谁都知道如何做到这一点?

Ram*_*iro 6

作为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);
Run Code Online (Sandbox Code Playgroud)


mas*_*oud 5

如果您使用Jsoncpp 1.1版,您可以使用Json::FastWriter替代Json::StyledWriterJson::Writer:

JSON文档只用一行编写.它不是用于"人类"消费,但可能有助于支持诸如带宽有限的RPC之类的功能.