Rapidjson文件

时间:2014-06-06 15:01:03

标签: c++ rapidjson

我正在尝试使用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"
    }
  ]
}

3 个答案:

答案 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);