提升属性树数不算孩子?

时间:2014-12-05 10:31:38

标签: c++ json boost boost-propertytree

我有一个看起来像这样的json:

{"field":{"val1":25, "val2":48, "name1":"qqd"}}

当我对收到的json进行验证时,具有如下特定字段:

std::size_t fcnt = pt.count("field");
std::size_t val1cnt = pt.count("field.val1");
std::size_t val2cnt = pt.count("field.val2");
std::size_t nm1cnt = pt.count("field.name1");
std::cout << fcnt << val1cnt << val2cnt << nm1cnt << std::endl; // this is just for testing
if (fcnt != 1 || val1cnt != 1 || val2cnt != 1 || nm1cnt !=1)
  throw BadJSONFormatException();

我始终是例外,打印的值是:1000。为什么? count不能像这样工作吗?

1 个答案:

答案 0 :(得分:4)

文档说:“用给定的密钥计算直接孩子的数量。”

换句话说,您传递的字符串是一个简单的键,而不是路径。点不会得到特殊处理。

我认为让ptree拥有双容器/路径接口是它最大的问题。我对此感到非常困惑。下一个版本需要考虑的事情。