我在C ++中使用Boost json遇到一些问题

时间:2018-11-21 19:20:47

标签: c++ arrays object boost

我看到有很多与我的问题非常相似的问题,但是我没有找到适合我问题的解决方案。

我正在尝试使用具有以下结构的boost库创建JSON:

{
  "event_date": "2018-06-11T09:35:48.867Z",
  "event_log": "2018-06-11 09:35:43,253 - recycler [TRACE]: Running recycler::WITHDRAW",
  "cassettes": [
      {
          "value" : "0",
          "currency": "BRL",
          "CDMType" : "WFS_CDM_TYPEREJECTCASSETTE",
          "lppPhysical" : [
              {
                  "positionName" : "BIN1A",
                  "count" : "3"
              }
          ]
      },
      {.....},{.....}
    ]
}

下面我们将拥有现在的代码:

boost::property_tree::ptree children, children2, child, child1, child2, child3, child4, child5, cassettes;

child1.put("value", "cash_unit->ulValues");
child2.put("currency", "std::string(cash_unit->cCurrencyID).substr(0, 3)");
child3.put("CDMType", "cash_unit->usType");

child4.put("lppPhysical.positionName", "ph_unit->lpPhysicalPositionName");
child5.put("lppPhysical.count", "cash_unit->ulCount");

cassettes.put("event_date", "2018-06-11T09:35:48.867Z");
cassettes.put("event_log", "2018-06-11 09:35:43,253 - recycler [TRACE]: Running recycler::WITHDRAW");

children.push_back(std::make_pair("", child1));
children.push_back(std::make_pair("", child2));
children.push_back(std::make_pair("", child3));

children2.push_back(std::make_pair("", child4));
children2.push_back(std::make_pair("", child5));

cassettes.add_child("cassettes", children);

write_json("C:\\Temp\\test.json", cassettes);`

总而言之,我很难将对象数组放入对象数组中。

1 个答案:

答案 0 :(得分:0)

最后找到了解决我问题的方法,这很简单,但是由于我对这个库不太熟悉,所以很难找到。

        //LppPhysical insertion
        lppPhysicalInfo.put("positionName", ph_unit->lpPhysicalPositionName);
        lppPhysicalInfo.put("count", cash_unit->ulCount);
        lppPhysical.push_back(std::make_pair("", lppPhysicalInfo));

        //Cassettes insertions
        cassettesInfo.put("value", cash_unit->ulValues);
        cassettesInfo.put("currency", std::string(cash_unit->cCurrencyID).substr(0, 3));
        cassettesInfo.put("CDMType", cash_unit->usType);
        cassettesInfo.add_child("lppPhysical", lppPhysical.get_child(""));
        cassettes.push_back(std::make_pair("", cassettesInfo));

        //External information insertion
        arquivo.put("event_date", "DateValue");
        arquivo.put("event_log", "LogValue");
        arquivo.add_child("cassettes", cassettes);

        //Json creator
        write_json("C:\\Temp\\assassino.json", arquivo); 

在lppPhysical上,我将所有内容配对在一起,在盒式磁带的插入中,我只是将lppPhysical作为盒式磁带的子代添加了,仅此而已。现在,lppPhysical是一个对象数组,位于Cassettes中,它也是一个对象数组