Jsoncpp格式问题

jsoncpp formatting problems

本文关键字:问题 格式 Jsoncpp      更新时间:2023-10-16

我正在使用jsoncpp,我有一个问题,json消息是如何格式化时,他们使用作家之一写的。

例如:

root["name"] = "monkey";
std::cout << writer.write(root) << "n";

给出像这样的格式

{
    "name" : "monkey"
}

当我真正想要的是:

{"name":"monkey"}

我看了文档,有提到setIndentLength(),但它们没有出现在源文件中,所以可能它们被弃用或其他什么。

不管怎样,有人知道怎么做吗?

作为cdunn2001答案的扩展,不需要重写默认设置(.settings_)。你可以重写StreamWriterBuilder builder的'indentation'值:

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);

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

JSON文档写在单行中。它不是用来"人类"消费,但对于支持RPC等特性可能很有用其中带宽是有限的

不支持使用FastWriterStyledWriterStyledStreamWriterWriter。使用StreamWriterBuilder,它将创建一个StreamWriter,并使用稍微不同的API。这样使用:

Json::StreamWriterBuilder builder;
builder.settings_["indentation"] = "";
std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
writer->write(root, &std::cout);