2016-08-23 43 views
0

的文件對象我有JSON對象的數組類似如下:附加到JSON的現有陣列使用rapidjson

[ 
    {"hello": "rapidjson", 
    "t": true, 
    "f": false, 
    "n": null, 
    "i": 2, 
    "pi": 3.1416}, 
    {"hello": "rapidjson", 
    "t": true, 
    "f": false, 
    "n": null, 
    "i": 12, 
    "pi": 3.88}, 
    {"hello": "rapidjson", 
    "t": true, 
    "f": false, 
    "n": null, 
    "i": 14, 
    "pi": 3.99} 
] 

我的應用程序吐出了一堆JSON對象,我需要添加到JSON可以說每隔30秒就有一個文件。

每一輪我需要追加到同一文件中,新的JSON對象添加到JSON對象的數組,我有。每個JSON文件的第一個條目是JSON模式。

我現在面臨的問題是,我不知道每一次如何讀取一個文件和新對象文件添加到現有對象的數組和寫回更新後的文件。如需要做什麼

能否請你給我提供指導?或者指點幾個例子(在教程中找不到類似的例子)?

回答

0

假設JSON對象的記錄中的當前陣列是:

[{ 「一個」, 「1」},{ 「二」, 「2」}]

,我們要添加JSON對象 - > {「three」,「3」}並將其寫回到同一個文件中,以便最終文件如下所示:[{「one」,「1」},{「two」,「2」 },{ 「三」, 「3」}]

下面是完整的要採取的步驟清單:

using namespace rapidjson; 

FILE* fp = fopen(json_file_name.c_str(), "r"); 
char readBuffer[65536]; 
FileReadStream is(fp, readBuffer, sizeof(readBuffer)); 

Document d, d2; 
d.ParseStream(is); 
assert(d.IsArray()); 
fclose(fp); 
d2.SetObject(); 
Value json_objects(kObjectType); 
json_objects.AddMember("three", "3", d2.GetAllocator()); 
d.PushBack(json_objects, d2.GetAllocator()); 

FILE* outfile = fopen(json_file_name.c_str(), "w"); 
char writeBuffer[65536]; 
FileWriteStream os(outfile, writeBuffer, sizeof(writeBuffer)); 

Writer<FileWriteStream> writer(os); 
d.Accept (writer); 
fclose(outfile);