C++ 如何将JsonCPP值作为字符串获取?

C++ 如何将JsonCPP值作为字符串获取?,c++,json,jsoncpp,C++,Json,Jsoncpp,我正在使用解析json数据。我真的不需要理解数据,我只需要打印出一些属性及其值。不知何故,这很难做到。首先,我需要知道值的类型,然后获取值,然后再次将其转换为字符串!有一个样式化的writer,但我不想使用它,因为它在末尾附加了一些CRLF 我是这样做的 CJsonHelper::getUInt(Json::Value &root, std::string key){ return root.get(key, 0-1).isInt() ? root.get(key, 0-1).a

我正在使用解析json数据。我真的不需要理解数据,我只需要打印出一些属性及其值。不知何故,这很难做到。首先,我需要知道值的类型,然后获取值,然后再次将其转换为字符串!有一个样式化的writer,但我不想使用它,因为它在末尾附加了一些CRLF

我是这样做的

CJsonHelper::getUInt(Json::Value &root, std::string key){
    return root.get(key, 0-1).isInt() ? root.get(key, 0-1).asUInt() : 0-1;
}

我可以只编写一个函数来获取所有属性吗?该函数并不真正关心类型等问题。

您可以轻松地创建自己的编写器,它可以执行任何您想要的操作。请查看
StyledWriter
的代码。您不喜欢的CRLF来自
StyledWriter::Write
。您可以创建自己的writer类,该类没有CRLF

如果您不介意修改库,请更改writer,以便像
writeValue
这样的函数受到保护,而不是私有的。然后,您可以使用不同的
Write
函数从
StyledWriter
派生您自己的类,并且仍然使用各种
Write*
函数来完成转换的细节。

项目已移至

要避免使用所有换行符,请使用:


为什么您要使用
0-1
而不仅仅是
-1
Json::Value whatever = ...;
Json::StreamWriterBuilder builder;
builder.settings_["indentation"] = "";
std::string out = Json::writeString(builder, whatever);