JsonCpp - 当有一个json :: Value对象时,我怎么知道它的关键名字?

时间:2013-12-10 13:46:44

标签: c++ json jsoncpp

假设我有这个Json文件:

[
    {
        "id": 0
    }
]

使用jsoncpp,我可以通过这样做得到一个Json::Value对象:

Json::Value node = root[0u]["id"];

好的,在代码中的其他地方,我正在获取node对象,我希望从中获取一些信息。我可以得到它的价值,如下:

int node_value = node.asInt();

但我怎样才能得到它的名字? (即“id”)。它应该是这样的:

string node_name  = node.Name(); //or maybe:
string node_name2 = node.Key(); 

但我找不到类似的东西。救命?如何获取节点名称?

2 个答案:

答案 0 :(得分:6)

您可以使用Json :: Value :: getMemberNames()来遍历名称。

Json::Value value;
for (auto const& id : value.getMemberNames()) {
    std::cout << id << std::endl;
}

答案 1 :(得分:1)

你需要一个指针吗?这不是一个坏主意,但为up-pointer添加一个字段会破坏二进制兼容性(which is very important)。所以是的,你需要把它包起来。

目前,子值只是Value,与其他任何一样。