From c0d6bfb057179ddbdef835c07082afe6d64eab74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20K=C3=B6rber?= Date: Fri, 19 Apr 2019 15:19:02 +0200 Subject: [PATCH] Return JSON data as Map --- .../main/java/org/shredzone/acme4j/toolbox/JSON.java | 9 +++++++++ .../java/org/shredzone/acme4j/toolbox/JSONTest.java | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/toolbox/JSON.java b/acme4j-client/src/main/java/org/shredzone/acme4j/toolbox/JSON.java index 801d8125..8e31577d 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/toolbox/JSON.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/toolbox/JSON.java @@ -172,6 +172,15 @@ public final class JSON implements Serializable { return JsonUtil.toJson(data); } + /** + * Returns the content as unmodifiable Map. + * + * @since 2.8 + */ + public Map toMap() { + return Collections.unmodifiableMap(data); + } + /** * Serialize the data map in JSON. */ diff --git a/acme4j-client/src/test/java/org/shredzone/acme4j/toolbox/JSONTest.java b/acme4j-client/src/test/java/org/shredzone/acme4j/toolbox/JSONTest.java index b6a831f9..0b65a6f7 100644 --- a/acme4j-client/src/test/java/org/shredzone/acme4j/toolbox/JSONTest.java +++ b/acme4j-client/src/test/java/org/shredzone/acme4j/toolbox/JSONTest.java @@ -35,6 +35,7 @@ import java.time.ZoneId; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.NoSuchElementException; import java.util.stream.Collectors; @@ -58,6 +59,7 @@ public class JSONTest { public void testEmpty() { JSON empty = JSON.empty(); assertThat(empty.toString(), is("{}")); + assertThat(empty.toMap().keySet(), is(empty())); } /** @@ -69,10 +71,20 @@ public class JSONTest { JSON fromString = JSON.parse(json); assertThat(fromString.toString(), is(sameJSONAs(json))); + Map map = fromString.toMap(); + assertThat(map.size(), is(2)); + assertThat(map.keySet(), containsInAnyOrder("foo", "bar")); + assertThat(map.get("foo"), is("a-text")); + assertThat(map.get("bar"), is(123L)); try (InputStream in = new ByteArrayInputStream(json.getBytes("utf-8"))) { JSON fromStream = JSON.parse(in); assertThat(fromStream.toString(), is(sameJSONAs(json))); + Map map2 = fromStream.toMap(); + assertThat(map2.size(), is(2)); + assertThat(map2.keySet(), containsInAnyOrder("foo", "bar")); + assertThat(map2.get("foo"), is("a-text")); + assertThat(map2.get("bar"), is(123L)); } }