如何将JsonCPP值作为字符串?

时间:2012-01-13 01:38:07

标签: c++ json jsoncpp

我使用JsonCpp解析json数据。我真的不需要理解数据,我只需要打印出一些属性及其值。它不知何故很难做到。首先,我需要知道值是什么类型,然后获取值,然后再将其转换为字符串!有一个风格的作家,但我不想使用它,因为它最后添加了一些CRLF。

我这样做

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

我是否可以只编写一个函数来获取所有属性,而这个函数并不真正关心类型等?

2 个答案:

答案 0 :(得分:8)

该项目已移至GitHub

要避免所有换行,请使用StreamWriterBuilder

Json::Value whatever = ...;
Json::StreamWriterBuilder builder;
builder.settings_["indentation"] = "";
std::string out = Json::writeString(builder, whatever);

答案 1 :(得分:1)

您可以轻松创建自己的作家,随心所欲。查看StyledWriter的代码。您不喜欢的CRLF来自StyledWriter::Write。您可以创建自己的编写器类,而不包含那些CRLF。

如果您不介意修改库,请更改编写器,使writeValue等函数受到保护而非私有。然后,您可以使用不同的StyledWriter函数从Write派生自己的类,并仍然使用各种write*函数来执行转换的详细信息。