2017-08-03 18 views
1

を使用してファイルに私は次のようなJSON形式にデータを書き込むためにjsoncppを使用しています:私は書きたい書き込みJSONデータincremently jsoncpp

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

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 
     ] 
    } 
] 

現在、私は,により、最終的にエンド]で追跡[、その後、JSONのエントリを書いています。また、最後のデータファイルで最後の,を削除する必要があります。

これをjsoncppなどの手段で自動的に行う方法はありますか?コメント欄で@Someのprorammer男からの提案を使用して

おかげ

+0

出力したコードの実際の出力が表示されますか?それとも*期待される出力ですか? *私たち*両方を見せてください。 –

+0

は、目的の出力を追加したばかりです。 – Pankaj

+1

次に、複数の 'event'オブジェクトを追加して外側の配列オブジェクトを書き込む、* outer *配列が必要です。 –

答えて

1

は、私は次のようでした:

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オブジェクトをその配列に追加しました。

関連する問題