【问题标题】:How to get JsonCPP values as strings?如何将 JsonCPP 值作为字符串获取?
【发布时间】:2012-02-09 07:39:33
【问题描述】:

我正在使用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;
}

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

【问题讨论】:

  • 你为什么使用0-1 而不仅仅是-1

标签: c++ json jsoncpp


【解决方案1】:

项目已移至GitHub

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

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

【讨论】:

    【解决方案2】:

    您可以轻松创建自己的作家,随心所欲。查看StyledWriter 的代码。你不喜欢的CRLF来自StyledWriter::Write。您可以创建自己的没有那些 CRLF 的 writer 类。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多