rapidjson编写器生成额外的大括号

rapidjson writer generate extra braces

本文关键字:rapidjson      更新时间:2023-10-16

我只是尝试使用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("%sn", buffer.GetString());

输出为

{"number":23}{}

在物体后面加上额外的支架是很奇怪的。但它适用于漂亮的作家。

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

我得到的结果是这样的:

{
"number": 23
}

当调用dd.Accept(writer)时,DOM对编写器来说是字符串。

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

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