From c05e58160f85af7f2a5dc607fd8a3768e8091687 Mon Sep 17 00:00:00 2001 From: Mitchell Hentges Date: Thu, 7 Apr 2016 16:54:41 +0200 Subject: [PATCH] Bump version to 1.3.0 Add string() number() and bool() methods --- CHANGELOG.md | 9 +++++++++ README.md | 10 ++++++++-- pom.xml | 2 +- src/main/java/ca/fuzzlesoft/JsonParse.java | 12 ++++++++++++ src/test/java/ca/fuzzlesoft/JsonParseTest.java | 18 ++++++++++++++++++ 5 files changed, 48 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb98774..3ef47c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# 1.3.0 + +Performance and array-index-trace release + +* Array index is now shown in JSON traces. [0] is the first element, [1] is the second, and so on +* Can now parse strings, numbers and constants as the root element. It doesn't have to be an array or object anymore +* More internal consistency in the way root objects are handled +* Performance increased by at least 25% (only one stack is used for managing state) + # 1.2.0 * `list()` and `map()` are now static methods. Building an object is no longer necessary diff --git a/README.md b/README.md index 17f42ef..d0a046d 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,15 @@ _Lower is better:_ ``` String mapString = "{\"fast\":true, \"super-neat\":true}"; String listString = "[1, 2, false]"; +String stringString = "\"yo dawg\""; +String numberString = "-1.2e-3"; +String boolString = "true"; Map map = JsonParse.map(mapString); List list = JsonParse.list(listString); +String string = JsonParse.string(stringString); +Number number = JsonParse.number(numberString); +Boolean bool = JsonParse.bool(boolString); ``` ## Getting the dependency @@ -26,13 +32,13 @@ List list = JsonParse.list(listString); ca.fuzzlesoft json-parse - 1.2.0 + 1.3.0 ``` **Gradle** ``` -compile 'ca.fuzzlesoft:json-parse:1.2.0' +compile 'ca.fuzzlesoft:json-parse:1.3.0' ``` ## Features diff --git a/pom.xml b/pom.xml index 9a0f1c9..267affb 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ ca.fuzzlesoft json-parse - 1.2.0 + 1.3.0 jar Json Parse diff --git a/src/main/java/ca/fuzzlesoft/JsonParse.java b/src/main/java/ca/fuzzlesoft/JsonParse.java index 1fad8e6..40f43e1 100644 --- a/src/main/java/ca/fuzzlesoft/JsonParse.java +++ b/src/main/java/ca/fuzzlesoft/JsonParse.java @@ -31,6 +31,18 @@ public static List list(String jsonString) { return (List) parse(jsonString); } + public static String string(String jsonString) { + return (String) parse(jsonString); + } + + public static Number number(String jsonString) { + return (Number) parse(jsonString); + } + + public static boolean bool(String jsonString) { + return (boolean) parse(jsonString); + } + /** * Parses jsonString according to what the outermost structure is * @param jsonString parsed diff --git a/src/test/java/ca/fuzzlesoft/JsonParseTest.java b/src/test/java/ca/fuzzlesoft/JsonParseTest.java index 0555161..f2d0257 100644 --- a/src/test/java/ca/fuzzlesoft/JsonParseTest.java +++ b/src/test/java/ca/fuzzlesoft/JsonParseTest.java @@ -206,6 +206,24 @@ public void shouldOnlyThrowJsonParseExceptionOnTooManyClosingTags() { } catch (JsonParseException ignored) {} } + @Test + public void shouldTestIndividualStrings() { + Assert.assertEquals("foo", JsonParse.string("\n\t\"foo\" ")); + Assert.assertEquals(null, JsonParse.string("\n\tnull ")); + } + + @Test + public void shouldTestIndividualNumbers() { + Assert.assertEquals(1234L, JsonParse.number("\n\t1234 ")); + Assert.assertEquals(Double.valueOf("-13.3e+7"), JsonParse.number("\n\t-13.3e+7 ")); + } + + @Test + public void shouldTestIndividualBooleans() { + Assert.assertEquals(true, JsonParse.bool("\n\ttrue ")); + Assert.assertEquals(false, JsonParse.bool("\n\tfalse ")); + } + @Test public void shouldFormatExceptionsWithJsonStack() { assertFormatting("{\"a\":{\"b\":{\"c\": fasle}}}", "a.b.c: \"fasle\" is not a valid constant. Missing quotes?");