首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jsoncpp格式问题

jsoncpp格式问题
EN

Stack Overflow用户
提问于 2011-09-26 23:13:50
回答 3查看 7.8K关注 0票数 10

我正在使用jsoncpp,在使用其中一个Writer编写json消息时,我遇到了一个如何格式化json消息的问题。

例如:

代码语言:javascript
复制
root["name"] = "monkey";
std::cout << writer.write(root) << "\n";

给出了如下格式的内容

代码语言:javascript
复制
{
    "name" : "monkey"
}

虽然我真的想要:

代码语言:javascript
复制
{"name":"monkey"}

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

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

EN

回答 3

Stack Overflow用户

发布于 2016-06-08 20:27:13

作为cdunn2001答案的扩展,不需要重写默认设置(.settings_)。你可以直接覆盖StreamWriterBuilder构建器的‘缩进’值:

代码语言:javascript
复制
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);
票数 6
EN

Stack Overflow用户

发布于 2011-09-26 23:54:21

如果您使用的是Jsoncpp1.1版本,则可以使用Json::FastWriter代替Json::StyledWriterJson::Writer

JSON文档被写在一行中。

它并不是为“人类”消费而设计的,但对于支持带宽有限的RPC这样的特性可能会很有用。

票数 5
EN

Stack Overflow用户

发布于 2015-02-15 08:46:28

FastWriterStyledWriterStyledStreamWriterWriterdeprecated。使用StreamWriterBuilder,它会创建一个带有稍微不同的StreamWriter的API。这样使用它:

代码语言:javascript
复制
Json::StreamWriterBuilder builder;
builder.settings_["indentation"] = "";
std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
writer->write(root, &std::cout);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7557258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档