我正在尝试使用rapidjson创建一个json文档,但我不知道如何才能为我所做的其他元素复制以下文档的一部分,特别是以"allocations“开头的嵌套对象
Value valObjectString(kStringType);
valObjectString.SetString("string");
doc.AddMember("string", valObjectString, doc.GetAllocator());但是“分配”和"url“又如何呢?
{
"string1": "string",
"string2": "string",
"string3": "string",
"string4": "string",
"string5": "string",
"allocations": [
{
"allocation": "string",
"url": "string"
}
]
}发布于 2014-08-27 23:32:55
你可以这样做
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());发布于 2017-06-17 04:25:09
创建所需的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());如果您想要添加其他对象,依此类推。
发布于 2014-06-09 23:33:40
好的,你需要创建一个包含分配和url的数组,并且你需要把这个数组放在分配中:
rapidjson::Value myArray(rapidjson::kArrayType);
doc.AddMember("allocations", myArray, doc.getAllocator);https://stackoverflow.com/questions/24084947
复制相似问题