It is often not necessary to create DOM (JsonObject) when serializing objects to a stream. It is more efficient to expose a public TJsonWriter to perform such task.
TJsonOutputWriter is used internally so far. Also, UTF8String should be considered in this part.