To serialize a BasicDBObject to a JSON content, it uses the https://github.com/mongodb/mongo-java-driver/blob/master/src/main/com/mongodb/util/JSON.java which provides the JSON#serialize( Object o, StringBuilder buf).
IMHO, I think it should be better to provides 2 methods with Writer and OutputStream:
- JSON#serialize( Object o, Writer writer)
- JSON#serialize( Object o, OutputStream out)
Why? Because if you wish returns the JSON content from a Servlet (HttpServletResponse#getWriter(), HttpServletResponse#getOutputStream()), we cannot use streaming mode. We need to create a StringBuilder and put it to the http response writer or outpustream :
-------------------------------------------------------
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BasicDBObject o = ...;
StringBuilder buf = new StringBuilder ();
JSON.serialize(o, buf);
response.getWriter().write(buf.toString());
// same code :
//response.getWriter().write(o.toString());
}
-------------------------------------------------------
I think it should be better to do with streaming mode like this:
-------------------------------------------------------
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BasicDBObject o = ...;
JSON.serialize(o, response.getWriter());
}
-------------------------------------------------------