2014-06-06 82 views
3

我想創建一個使用rapidjson的json文檔,但我不知道如何複製以下文檔的一部分,特別是以「分配」開頭的嵌套對象,其他元素是Rapidjson文檔

Value valObjectString(kStringType); 
valObjectString.SetString("string"); 
doc.AddMember("string", valObjectString, doc.GetAllocator()); 

但是「分配」和「網址」呢?

{ 
    "string1": "string", 
    "string2": "string", 
    "string3": "string", 
    "string4": "string", 
    "string5": "string", 
    "allocations": [ 
    { 
     "allocation": "string", 
     "url": "string" 
    } 
    ] 
} 

回答

0

好吧,你需要創建一個包含分配和URL的數組,你需要把這個陣列中分配:

rapidjson::Value myArray(rapidjson::kArrayType); 

doc.AddMember("allocations", myArray, doc.getAllocator); 
6

你可以像這樣

Value valObjectString(kStringType); 
valObjectString.SetString("string"); 
doc.AddMember("string", valObjectString, doc.GetAllocator()); 

Value array(kArrayType); 
Value tmp; 
tmp.SetObject(); 
tmp.AddMember("allocation", "string", doc.GetAllocator()); 
tmp.AddMember("url", "string", doc.GetAllocator()); 
array.PushBack(tmp, doc.GetAllocator()); 
doc.AddMember("allocations", array, doc.GetAllocator()); 
0

一個簡單的方法創建想要的JSON文檔將使用包括"rapidjson/writer.h"

您需要使用writer.Key()來創建對象的關鍵字並將其命名。然後,您可以使用writer.String()來設置密鑰的值。

(這裏我用.String(),但您可以使用由RapidJson支持任何類型的。)

此外,您可以輕鬆地告訴筆者,當與writer.StartObject()writer.StartArray()writer.EndObject()以及起點和終點對象和數組writer.EndArray()命令。

Document yourJsonDoc; 

StringBuffer s; 
Writer<StringBuffer> writer(s); 

writer.StartObject(); 
writer.Key("string1"); 
writer.String("string"); 
writer.Key("string2"); 
writer.String("string"); 
writer.Key("string3"); 
writer.String("string"); 
writer.Key("string4"); 
writer.String("string"); 
writer.Key("string5"); 
writer.String("string"); 
writer.Key("allocations"); 
writer.StartArray(); 
writer.StartObject(); 
writer.Key("allocations"); 
writer.String("string"); 
writer.Key("url"); 
writer.String("string"); 
writer.EndObject(); 
writer.EndArray(); 
writer.EndObject(); 

yourJsonDoc.Parse(s.GetString().c_str()); 

依此類推如果您想添加其他物件。