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());
Ein Servlet/JSP würde statt in den StringWriter in den response Strom schreiben.