如何从json-cpp解析器获取属性名称和属性值?

时间:2012-10-26 00:26:35

标签: c++ json

我正在使用 jsoncpp 解析器(http://jsoncpp.sourceforge.net)来解析JSON数据。 所以,如果我们有以下JSON:

{ "name": "Joseph", "age": 20 }

如何在年龄20岁之后获取名称 名称 Joseph ,... ? 好的,我们可以普遍这个:

string e = root.get(propertyName, defaultValue).asString();

真实置于我们想要的地方:

string e = root.get(name, "Mark").asString();

现在,变量 e 是约瑟夫,它有效。但我 接受/写“名称”。我不想 QUERY (不要质疑我想要的功能“name”(属性名称)和“Joseph”(值属性))。

最好存储在字段(例如C / C ++)中:

property[name][0] = "Joseph"
property[age][0] = 20 

我该怎么做?还是其他任何想法?

1 个答案:

答案 0 :(得分:6)

您可以使用其getMemberNames()函数获取Json :: Value对象的所有成员名称。这将返回一个对象,您可以使用.begin().end()进行迭代,就像任何其他标准库容器一样。 (实际上,返回类型是std::vector<std::string>的别名。)

拥有成员名称之后,您应该能够遍历它们并使用.get(std::string &, const ValueType &)正如您已经做的那样获取每个对象键的值。


请注意,JSON对象本质上是无序的,因此您无需依赖具有任何排序的名称列表。如果你想要一个有序的对象,你应该使用JSON数组,而不是JSON对象。