c++ - 如何使用 C++ Boost 解析 JSON 数组?

标签 c++ json boost boost-propertytree

我有一个包含一些 JSON 内容的文件,如下所示:

{
  "frame":
  {
    "id": "0",
    "points":
    [
      [ "0.883", "0.553", "0" ],
      [ "0.441", "0.889", "0" ],
    ]
  },
  "frame":
  ...
}

如何使用 C++ 和 Boost ptree 解析 double 组的值?

最佳答案

使用迭代器,Luke。

首先,你必须解析文件:

boost::property_tree::ptree doc;
boost::property_tree::read_json("input_file.json", doc);

...现在,因为您似乎在顶级字典中有多个“框架”键,您必须遍历它们:

BOOST_FOREACH (boost::property_tree::ptree::value_type& framePair, doc) {
    // Now framePair.first == "frame" and framePair.second is the subtree frame dictionary
} 

遍历行和列是一样的:

BOOST_FOREACH (boost::property_tree::ptree::value_type& rowPair, frame.get_child("points")) {
    // rowPair.first == ""
    BOOST_FOREACH (boost::property_tree::ptree::value_type& itemPair, rowPair.second) {
        cout << itemPair.second.get_value<std::string>() << " ";
    }
    cout << endl;
}

我没有测试代码,但这个想法会奏效:-)

关于c++ - 如何使用 C++ Boost 解析 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17124652/

相关文章:

c++ - 将共享库链接到另一个共享库

json - 使用 Alamofire 4 解析嵌套的 JSON

json - 在 shell 脚本中读取 JSON 数据

c++ - 如何 boost boost::spirit::x3 键值解析器的性能

c++ - 是否有 STL/boost 算法来检查容器中的所有元素是否匹配一个值?

c++ - 使用 'typename' 关键字将非类型视为依赖上下文中的类型

c++ - 当在某些非 C++ 程序中使用 C++ 代码时,C++ 运行时调用 terminate() 是否为 "legal"?

sql - 如何一次将多个 JSON 文件插入到 postgresql 表中?

c++ - 使用 boost::numeric_cast<double>(long) 是否有目的(即从 long 转换为 double)?

c++ - C++ 宏的可选参数