c++ - 使用 Boost.PropertyTree 解析 JSON 数组

标签 c++ json boost-propertytree

我有下面显示的 JSON 文件。

{
  "instruments": [
      {
        "minShift": -1.0, // opcjonalnie - jeśli brak, to taka, jak dla globalnych ustawień
        "maxShift": 1.0, // opcjonalnie - jeśli brak, to taka, jak dla globalnych ustawień
        "stepShift": 0.01, // opcjonalnie - jeśli brak, to taka, jak dla globalnych ustawień
        "instrument_old": "CFH/EURUSD",
        "instrument_new": "LMAX/EURUSD"
      },
      {
        "minShift": -1.0, // opcjonalnie - jeśli brak, to taka, jak dla globalnych ustawień
        "maxShift": 1.0, // opcjonalnie - jeśli brak, to taka, jak dla globalnych ustawień
        "stepShift": 0.01, // opcjonalnie - jeśli brak, to taka, jak dla globalnych ustawień
        "instrument_old": "CFH/EURUSD",
        "instrument_new": "Saxo/EURUSD" 
      },
      {
        "minShift": -1.0, // opcjonalnie - jeśli brak, to taka, jak dla globalnych ustawień
        "maxShift": 1.0, // opcjonalnie - jeśli brak, to taka, jak dla globalnych ustawień
        "stepShift": 0.01, // opcjonalnie - jeśli brak, to taka, jak dla globalnych ustawień
        "instrument_old": "LMAX/XAUUSD",
        "instrument_new": "Saxo/XAUUSD" 
      }
  ]
}

我想深入了解每个“工具”,并将每个字段都纳入结构。它将生成结构 vector 。

我试过这种方式(但不能正常工作):

BOOST_FOREACH( ptree::value_type& node,pt.get_child("instruments") )
{ 
    InstrumentInfo instrumentInfo;
    instrumentInfo.shiftInfo.minShift = pt.get<double>("minShift",shiftInfo.minShift);
    instrumentInfo.shiftInfo.maxShift = pt.get<double>("maxShift",shiftInfo.maxShift);
    instrumentInfo.shiftInfo.stepShift = pt.get<double>("stepShift",shiftInfo.stepShift);
    instrumentInfo.instrumentOld = pt.get<string>("instrument_old","");
    instrumentInfo.instrumentNew = pt.get<string>("instrument_new","");
    instrumentsInfo.push_back(instrumentInfo);
}

最佳答案

我有一个答案:

BOOST_FOREACH( ptree::value_type& node,pt.get_child("instruments") )
{ 
        InstrumentInfo instrumentInfo;
        instrumentInfo.shiftInfo.minShift = node.second.get<double>("minShift",shiftInfo.minShift);
        instrumentInfo.shiftInfo.maxShift = node.second.get<double>("maxShift",shiftInfo.maxShift);
        instrumentInfo.shiftInfo.stepShift = node.second.get<double>("stepShift",shiftInfo.stepShift);
        instrumentInfo.instrumentOld = node.second.get<string>("instrument_old","");
        instrumentInfo.instrumentNew = node.second.get<string>("instrument_new","");
        instrumentsInfo.push_back(instrumentInfo);
}

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

相关文章:

c++ - 是否可以用 C++ 编写应用程序的核心,然后将 Obj-C 和 Cocoa 用于 UI?

C++ 指针类型的模板函数重载

javascript - ASP.NET应用程序客户端读取Json数据

c++ - Boost ptree 数字数组

c++ - boost::property_tree 传递包含 <xmlattr> 的子树

c++ - 为什么 std::array 的 operator==() 没有标记为 constexpr?

c++ - 定义期间变量的参数

java - 从 JSON 中解析无限量的变量

json - 为什么 postman 中显示 "The field is required",即使它可以为空?

jquery - 使用 json_write() 时有两个 unicode 代码点?