我正在使用 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
我该怎么做?还是其他任何想法?
答案 0 :(得分:6)
您可以使用其getMemberNames()
函数获取Json :: Value对象的所有成员名称。这将返回一个对象,您可以使用.begin()
和.end()
进行迭代,就像任何其他标准库容器一样。 (实际上,返回类型是std::vector<std::string>
的别名。)
拥有成员名称之后,您应该能够遍历它们并使用.get(std::string &, const ValueType &)
正如您已经做的那样获取每个对象键的值。
请注意,JSON对象本质上是无序的,因此您无需依赖具有任何排序的名称列表。如果你想要一个有序的对象,你应该使用JSON数组,而不是JSON对象。