使用jsoncpp将json数据递增地写入文件

时间:2017-08-03 06:24:09

标签: c++ json jsoncpp

我正在使用jsoncpp将数据写入json格式,如下所示:

Json::Value event;   
Json::Value lep(Json::arrayValue);

event["Lepton"] = lep;
lep.append(Json::Value(1));
lep.append(Json::Value(2));
lep.append(Json::Value(3));
lep.append(Json::Value(4));

event["Lepton"] = lep;
Json::StyledWriter styledWriter;
cout << styledWriter.write(event);

我得到了以下输出:

{
   "Lepton" : [
      1,
      2,
      3,
      4
   ]
}

我想在我的数据文件中写入多个这样的块。我最终想要的是:

[
    {
       "Lepton" : [
          1,
          2,
          3,
          4
       ]
    },
    {
       "Lepton" : [
          1,
          2,
          3,
          4
       ]
    }
]

目前,我正在撰写[,然后是json条目,后跟,,最后是]。另外,我必须删除最终数据文件中的最后一个,

有没有办法通过jsoncpp或其他方法自动完成所有这些?

由于

1 个答案:

答案 0 :(得分:1)

在评论部分使用@Some prorammer dude的建议,我做了以下事情:

   Json::Value AllEvents(Json::arrayValue);
   for(int entry = 1; entry < 3; ++entry)
   {
      Json::Value event;   
      Json::Value lep(Json::arrayValue); 

      lep.append(Json::Value(1 + entry));
      lep.append(Json::Value(2 + entry));
      lep.append(Json::Value(3 + entry));
      lep.append(Json::Value(4 + entry));

      event["Lepton"] = lep;
      AllEvents.append(event);

      Json::StyledWriter styledWriter;
      cout << styledWriter.write(AllEvents);
   }

我得到了所需的输出,如下所示:

    [
        {
           "Lepton" : [
              1,
              2,
              3,
              4
           ]
        },
        {
           "Lepton" : [
              2,
              3,
              4,
              5
           ]
        }
    ]

基本上,我创建了一个Json数组并将生成的Json对象附加到其中。