【发布时间】:2018-12-13 23:47:35
【问题描述】:
我有一个想要序列化的 jsoncpp 值。最直接的方式是这样的:
Json::Value val; // population is left as an exercise for the reader
std::string str = Json::FastWriter().write(val);
问题是 FastWriter 已被弃用,我不能容忍编译器警告。根据不太直观的文档,我应该改用StreamWriterBuilder:
Json::StreamWriterBuilder builder;
builder["commentStyle"] = "None";
builder["indentation"] = "";
std::unique_ptr<Json::StreamWriter> writer( builder.newStreamWriter() );
std::ostringstream os;
writer->write(val, &os);
std::string str = os.str();
这肯定不能“更好”吗?我假设问题出在我身上,并且有一种直接的方法来执行最小的序列化(没有多余的空格)。
This 显示了一种更紧凑的形式(尽管它似乎只是将上述内容包装在一个函数调用中)。
Json::StreamWriterBuilder builder;
builder["indentation"] = ""; // assume default for comments is None
std::string str = Json::writeString(builder, val);
现在这样是对的吗?
【问题讨论】: