This looks really fragile - requires the JSON to have elements in the correct order? You should have a while loop and switch statement on the name of the elements, I believe (see JsonReader's javadoc). Or else use a JsonDeserializer instead, as these give you an object model to work with rather than a stream, so you can request elements out of them by name.