Java ist auch eine Insel

Freitag, Februar 02, 2007

Jettison - JSON-Dokumente nach dem StAX-Modell schreiben

Viele JSON-Implementierungen nehmen ein direktes Mapping der Java-Objekte nach JSON vor. http://jettison.codehaus.org/ geht da einen anderen Weg. Mit den aus StAX bekannten Methoden zum Schreiben/Lesen von Elementen wird nicht in ein XML-Format "gemarshalled", sondern in das JSON-Format. Ein Testfall für MappedXMLStreamWriterTest macht deutlich, was hier vor sich geht:

StringWriter strWriter = new StringWriter();
MappedNamespaceConvention con = new MappedNamespaceConvention();
AbstractXMLStreamWriter w = new MappedXMLStreamWriter(con, strWriter);

w.writeStartDocument();
w.writeStartElement("root");

w.writeStartElement("child1");
w.writeStartElement("subchild1");
w.writeCharacters("test");
w.writeEndElement();

w.writeStartElement("subchild2");
w.writeCharacters("test");
w.writeEndElement();

w.writeEndElement();

w.writeStartElement("child2");
w.writeStartElement("subchild");
w.writeCharacters("test");
w.writeEndElement();
w.writeEndElement();

w.writeEndElement();
w.writeEndDocument();

w.close();
strWriter.close();

System.out.println(strWriter.toString());

assertEquals("{\"root\":{" +
"\"child1\":{\"subchild1\":\"test\",\"subchild2\":\"test\"}," +
"\"child2\":{\"subchild\":\"test\"}}}", strWriter.toString());


Aus http://svn.jettison.codehaus.org/browse/jettison/trunk/src/test/java/org/codehaus/jettison/mapped/MappedXMLStreamWriterTest.java?r=11.


Ein Servlet/JSP würde statt in den StringWriter in den response Strom schreiben.

AddThis Social Bookmark Button