Reading JSON - beckchr/staxon GitHub Wiki
Creating a JSON XMLStreamReader
The easiest way to create a reader instance is to use the various JsonXMLInputFactory.createXMLStreamReader(...)
methods, e.g.
XMLInputFactory factory = new JsonXMLInputFactory();
XMLStreamReader reader = factory.createJsonXMLStreamReader(stream);
The stream
parameter can be a java.io.InputStream
or java.io.Reader
.
The input factory will use an instance of JsonStreamFactory
to create underlying JSON stream sources (default is to use
StAXON's own implementation). You may also explicitly pass an instance to the input factory, e.g.:
XMLInputFactory factory = new JsonXMLInputFactory(new JacksonStreamFactory(...));
XMLStreamReader reader = factory.createJsonXMLStreamReader(stream);
Please refer to Factory Configuration for a description of available input properties.
Reading Documents
If you know StAX, you'll notice that there's nothing special here: just use the XMLStreamReader
obtained from StAXON as usual.
In fact, if you already have some code which reads XML and want to switch to JSON, just replacing the writer reader do the trick.
JsonXMLStreamReader reader = factory.createXMLStreamReader(new StringReader("{\"alice\":\"charlie\"}"));
assert reader.getEventType() == XMLStreamConstants.START_DOCUMENT;
reader.nextTag();
assert reader.isStartElement() && "alice".equals(reader.getLocalName());
reader.next();
assert reader.hasText() && "charlie".equals(reader.getText());
reader.nextTag();
assert reader.isEndElement();
reader.next();
assert reader.getEventType() == XMLStreamConstants.END_DOCUMENT;
reader.close();
To better understand StAXON's Mapping Convention, you may also want to refer to the Writing JSON examples.