2013-02-25 4 views
0

Я просто пытаюсь использовать rapidjson. И напишите код для перевода кода в строку.quickjson writer генерирует дополнительные брекеты

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

dd.Accept(writer) Когда вызывается, то DOM является stringify к писателю.

Впоследствии, вызывая writer.StartObject() и writer.EndObject(), просто напишите еще один пустой объект, используя SAX-подобный API (т. Е. Записывая «дополнительные фигурные скобки»).

Таким образом, выход содержит выход DOM и выход SAX. И это ожидаемый результат.

Смежные вопросы