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