@Test public void testLocationExtraction() throws IOException { // { // "index" : "test", // "source" : { // value : "something" // } // } FastByteArrayOutputStream os = new FastByteArrayOutputStream(); JsonGenerator gen = new JsonFactory().createJsonGenerator(os, JsonEncoding.UTF8); gen.writeStartObject(); gen.writeStringField("index", "test"); gen.writeFieldName("source"); gen.writeStartObject(); gen.writeStringField("value", "something"); gen.writeEndObject(); gen.writeEndObject(); gen.close(); byte[] data = os.copiedByteArray(); JsonParser parser = new JsonFactory().createJsonParser(data); assertThat(parser.nextToken(), equalTo(JsonToken.START_OBJECT)); assertThat(parser.nextToken(), equalTo(JsonToken.FIELD_NAME)); // "index" assertThat(parser.nextToken(), equalTo(JsonToken.VALUE_STRING)); assertThat(parser.nextToken(), equalTo(JsonToken.FIELD_NAME)); // "source" // JsonLocation location1 = parser.getCurrentLocation(); // parser.skipChildren(); // JsonLocation location2 = parser.getCurrentLocation(); // // byte[] sourceData = new byte[(int) (location2.getByteOffset() - // location1.getByteOffset())]; // System.arraycopy(data, (int) location1.getByteOffset(), sourceData, 0, // sourceData.length); // // JsonParser sourceParser = new JsonFactory().createJsonParser(new // FastByteArrayInputStream(sourceData)); // assertThat(sourceParser.nextToken(), equalTo(JsonToken.START_OBJECT)); // assertThat(sourceParser.nextToken(), equalTo(JsonToken.FIELD_NAME)); // "value" // assertThat(sourceParser.nextToken(), equalTo(JsonToken.VALUE_STRING)); // assertThat(sourceParser.nextToken(), equalTo(JsonToken.END_OBJECT)); }