While working on Jettison, I often have need to convert XML to JSON. Here’s a simple method that uses XStream and Jettison to do this conversion.
import java.io.StringReader;
import java.io.StringWriter;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.copy.HierarchicalStreamCopier;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
import com.thoughtworks.xstream.io.xml.XppReader;
public class Test {
public static void main(String[] args) throws Exception {
String xml = "Tove Jani Reminder " +
"Don't forget me this weekend! ";
HierarchicalStreamReader sourceReader = new XppReader(new StringReader(xml));
StringWriter buffer = new StringWriter();
JettisonMappedXmlDriver jettisonDriver = new JettisonMappedXmlDriver();
jettisonDriver.createWriter(buffer);
HierarchicalStreamWriter destinationWriter = jettisonDriver.createWriter(buffer);
HierarchicalStreamCopier copier = new HierarchicalStreamCopier();
copier.copy(sourceReader, destinationWriter);
System.out.println(buffer.toString());
}
}
All conversion problems, like lists representation are handled by Jetttison. This example uses Mapped convention, but of course, BadgerFish notation can be used as well.