1

我只是尝试使用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
}
4

1 回答 1

1

dd.Accept(writer)被调用时,DOM 被字符串化到 writer。

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

所以输出包含 DOM 输出和 SAX 输出。这是预期的输出。

于 2013-02-25T09:02:53.220 回答