2013-04-03 182 views
1

如何将一个成员添加到rapidjson对象然后将其打印出来?rapidjson - 更改对象 - 添加元素/ item

例如添加

itemtwo => "world" ; 

到该对象:

{"itemone":"hello"} 

我试图

char buff[] = "{\"itemone\":\"hello\"}"; 
rapidjson::Document json_obj; 
if(json_obj.Parse<0>(buff.c_str()).HasParseError() == false){   
    json_obj["itemtwo"].SetString("world"); 
    rapidjson::StringBuffer strbuf; 
    rapidjson::Writer<rapidjson::StringBuffer> writer(strbuf); 
    json_obj.Accept(writer); 
    cout<<strbuf.GetString()<<endl; 
} 

我得到以下输出:

{"itemone":"hello"} 

含义没有变化。 我在做什么错?

回答

2

json_obj["itemtwo"]只能找到具有该名称的成员,这是不存在的。它不创建新条目(如在std::map中)。

要操纵对象,请使用AddMember()和其他相关成员函数,例如,

json_obj.AddMember("itemone", "hello", json_obj.GetAllocator()); 

您可以参考rapidjson user guide和/或包中的tutorial.cpp。