Repository: johnzon Updated Branches: refs/heads/master 05effff6e -> 08905f99e
JOHNZON-139 add skipObject and skipArray support Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/d455deaf Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/d455deaf Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/d455deaf Branch: refs/heads/master Commit: d455deafbf01675b5c607a8241adfde56ea11a6f Parents: 05effff Author: Mark Struberg <[email protected]> Authored: Tue Oct 17 09:02:03 2017 +0200 Committer: Mark Struberg <[email protected]> Committed: Tue Oct 17 09:02:03 2017 +0200 ---------------------------------------------------------------------- .../johnzon/core/JohnzonJsonParserImpl.java | 14 ++++ .../org/apache/johnzon/core/JsonParserTest.java | 86 ++++++++++++++++++++ 2 files changed, 100 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/d455deaf/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java index 5feb3d9..5caa5b0 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java @@ -58,4 +58,18 @@ public abstract class JohnzonJsonParserImpl implements JohnzonJsonParser { JsonReaderImpl jsonReader = new JsonReaderImpl(this, true); return jsonReader.readValue(); } + + @Override + public void skipObject() { + // could surely get improved. + // But no need for now as this method is not used that often. + getObject(); + } + + @Override + public void skipArray() { + // could surely get improved. + // But no need for now as this method is not used that often. + getArray(); + } } http://git-wip-us.apache.org/repos/asf/johnzon/blob/d455deaf/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java index 6d57e26..0a6e975 100644 --- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java +++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java @@ -270,6 +270,92 @@ public class JsonParserTest { } @Test + public void testSkipObject() { + final JsonParser parser = Json.createParser(new StringReader("{\"a\":{\"x\":1,\"y\":{\"y1\":2}}, \"b\":3}")); + assertNotNull(parser); + + { + assertTrue(parser.hasNext()); + final JsonParser.Event event = parser.next(); + assertNotNull(event); + assertEquals(JsonParser.Event.START_OBJECT, event); + } + { + assertTrue(parser.hasNext()); + final JsonParser.Event event = parser.next(); + assertNotNull(event); + assertEquals(JsonParser.Event.KEY_NAME, event); + assertEquals("a", parser.getString()); + } + { + assertTrue(parser.hasNext()); + final JsonParser.Event event = parser.next(); + assertNotNull(event); + assertEquals(JsonParser.Event.START_OBJECT, event); + } + + parser.skipObject(); + + { + assertTrue(parser.hasNext()); + final JsonParser.Event event = parser.next(); + assertNotNull(event); + assertEquals(JsonParser.Event.KEY_NAME, event); + assertEquals("b", parser.getString()); + } + { + assertTrue(parser.hasNext()); + final JsonParser.Event event = parser.next(); + assertNotNull(event); + assertEquals(Event.VALUE_NUMBER, event); + assertEquals(3, parser.getInt()); + } + } + + @Test + public void testSkipArray() { + final JsonParser parser = Json.createParser(new StringReader("{\"a\":[\"x\",\"y\"], \"b\":3}")); + assertNotNull(parser); + + { + assertTrue(parser.hasNext()); + final JsonParser.Event event = parser.next(); + assertNotNull(event); + assertEquals(JsonParser.Event.START_OBJECT, event); + } + { + assertTrue(parser.hasNext()); + final JsonParser.Event event = parser.next(); + assertNotNull(event); + assertEquals(JsonParser.Event.KEY_NAME, event); + assertEquals("a", parser.getString()); + } + { + assertTrue(parser.hasNext()); + final JsonParser.Event event = parser.next(); + assertNotNull(event); + assertEquals(Event.START_ARRAY, event); + } + + parser.skipArray(); + + { + assertTrue(parser.hasNext()); + final JsonParser.Event event = parser.next(); + assertNotNull(event); + assertEquals(JsonParser.Event.KEY_NAME, event); + assertEquals("b", parser.getString()); + } + { + assertTrue(parser.hasNext()); + final JsonParser.Event event = parser.next(); + assertNotNull(event); + assertEquals(Event.VALUE_NUMBER, event); + assertEquals(3, parser.getInt()); + } + } + + @Test public void simpleUTF16LE() { final JsonParser parser = Json.createParserFactory(null).createParser(Thread.currentThread() .getContextClassLoader().getResourceAsStream("json/simple_utf16le.json"), UTF_16LE);
