我正在尝试使用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"
}
]
}
答案 0 :(得分:7)
你可以这样做
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());
答案 1 :(得分:1)
创建所需JSON文档的简便方法是使用"rapidjson/writer.h"
include。
您需要使用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());
如果您想添加其他对象,依此类推。
答案 2 :(得分:0)
好的,你需要创建一个包含分配和url的数组,你需要把这个数组放在分配中:
rapidjson::Value myArray(rapidjson::kArrayType);
doc.AddMember("allocations", myArray, doc.getAllocator);