2015-04-23 35 views
0

我想創建cocos2d-x 3.4 JSON對象與rapidjson,並將其轉換爲字符串:`doc.AddMember(「key1」,1,document.GetAllocator())```doc [「key1」] = 1`有什麼區別?

rapidjson::Document doc; 
doc.SetObject(); 
doc.AddMember("key1",1,doc.GetAllocator()); 
doc["key2"]=2; 

rapidjson::StringBuffer sb; 
rapidjson::Writer<rapidjson::StringBuffer> writer(sb); 
doc.Accept(writer); 

CCLOG("%s",sb.GetString()); 

但產量{"key1":1} not {"key1":1,"key2":2},爲什麼呢?

回答

0

在RapidJSON的舊(0.1x)版本中,doc["key2"]返回代表空值的Value單例。 doc["key2"] = 2實際上寫給那個單身人士。

newer versions of RapidJSON(v1.0.x)中,此行爲已更改。它基本上使得在JSON對象中找不到的鍵的斷言失敗,以便解決你提到的確切問題。

作爲提醒,當操作可能需要分配內存(如AddMemberPushBack,一個Allocator對象必須出現。由於operator[]通常只具有一個參數,就不能添加新成員作爲STL,這是相當不可思議並不是非常用戶友好的,但是這是RapidJSON設計中性能和內存開銷的一種折中。

相關問題