5

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

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

如何在年龄和 20 岁之后获取属性名称 namevalue Joseph , ...?好的,我们可以普遍这样做:

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

但我们真正想要的是这样的:

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

现在,变量e是 Joseph,它起作用了。但我必须取/写“名字”。我不想查询(不质疑我想要获取“名称”(财产名称)和“约瑟夫”(财产价值)的功能)。

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

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

我怎样才能做到这一点?还是有其他想法?

4

1 回答 1

6

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

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


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

于 2012-10-26T00:47:10.500 回答