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はライターに文字列化されます。

その後、SAXのようなAPIを使用して別の空のオブジェクトを呼び出しwriter.StartObject()writer.EndObject()書き込みます(つまり、「余分な中括弧」を書き込みます)。

したがって、出力にはDOM出力とSAX出力が含まれます。そして、これは期待される出力です。

于 2013-02-25T09:02:53.220 に答える