5

我需要使用 jsoncpp 库读取 json 文件。

我有这个文件:

{"one":false,"two":[{"id":"first"},{"id":"second"}],"three":550}

如果我只需要读取“两个”元素的第一个 id,我使用:

std::string contents; //Contain the file
Json::Value root;
Json::Reader reader;
reader.parse(contents, root, false);
std::string aux = root["two"][0]["id"].asString();

它在 Linux 中运行良好,但是当我在 Windows 中尝试时出现此错误:

error: ambiguous overload for 'operator[]' in 'root.Json::Value::operator[](((const char*)"two"))[0]'

为什么会发生,我该如何解决?谢谢。

已解决:有两种operator[],一种带有intas参数,另一种带有const charas参数,编译器不知道在Windows中使用谁,但在Linux中可以。现在我改用[0u]一个[0]数字作为参数,它工作正常。

4

1 回答 1

4

这让我发疯,直到我偶然发现这个问题,我神秘地想通了:只需将其转换为 Json::Uint (出于某种原因),或使用 'u':

MapEvent::MapEvent(Json::Value& val)
{
    operator_enum = val.get(0u, "").asString();
}
于 2013-11-24T02:21:22.793 回答