rapidjson writer会产生额外的括号

时间:2013-02-25 08:46:38

标签: c++

我只是尝试使用rapidjson。 并编写一些代码将代码转换为字符串。

Document dd;
dd.SetObject();

Value num(kNumberType);
num.SetInt(23);

dd.AddMember("number", num, dd.GetAllocator());

GenericStringBuffer< UTF8<> > buffer;
Writer<GenericStringBuffer< UTF8<> > > writer(buffer);

dd.Accept(writer);

// use writer
writer.StartObject();
writer.EndObject();

printf("%s\n", buffer.GetString());

输出

{"number":23}{}

在物体之后获得额外的括号是很奇怪的。但它与漂亮的作家合作很好。

StringBuffer buffer;
PrettyWriter<StringBuffer> writer(buffer);
dd.Accept(writer);
printf("%s\n", buffer.GetString());

我得到了这样的结果:

{
"number": 23
}

1 个答案:

答案 0 :(得分:1)

调用dd.Accept(writer)时,DOM将字符串化为编写者。

之后,调用writer.StartObject()writer.EndObject()只需使用类似SAX的API编写另一个空对象(即编写“额外大括号”)。

因此输出包含DOM输出和SAX输出。这是预期的产出。