From 180d9f29fc306c565357298d5ea7c336d91068b4 Mon Sep 17 00:00:00 2001 From: Kristian Kraljic Date: Mon, 21 Sep 2015 22:27:28 +0200 Subject: [PATCH 1/3] Added JsonHelper class to convert Java/JSON --- .../com/eclipsesource/json/JsonHelper.java | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java diff --git a/com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java b/com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java new file mode 100644 index 0000000..78abc10 --- /dev/null +++ b/com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java @@ -0,0 +1,105 @@ +/******************************************************************************* + * Copyright (c) 2013, 2015 EclipseSource. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + ******************************************************************************/ +package com.eclipsesource.json; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; + +import com.eclipsesource.json.Json; +import com.eclipsesource.json.JsonArray; +import com.eclipsesource.json.JsonObject; +import com.eclipsesource.json.JsonValue; + +public class JsonHelper { + public static Object jsonValueAsObject(JsonValue value) { + if(value.isBoolean()) + return value.asBoolean(); + else if(value.isNumber()) + return value.asInt(); + else if(value.isString()) + return value.asString(); + else if(value.isArray()) + return jsonArrayAsList(value.asArray()); + else if(value.isObject()) + return jsonObjectAsMap(value.asObject()); + else return null; + } + public static Set jsonArrayAsSet(JsonArray array) { + Set set = new HashSet<>(); + for(JsonValue value:array) + set.add(jsonValueAsObject(value)); + return set; + } + public static List jsonArrayAsList(JsonArray array) { + List list = new ArrayList<>(); + for(JsonValue element:array) + list.add(jsonValueAsObject(element)); + return list; + } + public static Map jsonObjectAsMap(JsonObject object) { + Map map = new HashMap<>(); + for(JsonObject.Member member:object) + map.put(member.getName(), jsonValueAsObject(member.getValue())); + return map; + } + + public static JsonValue objectAsJsonValue(Object object) { + if(object==null) + return Json.NULL; + else if(object instanceof Boolean) + return Json.value((Boolean)object); + else if(object instanceof Integer) + return Json.value((Integer)object); + else if(object instanceof Long) + return Json.value((Long)object); + else if(object instanceof Float) + return Json.value((Float)object); + else if(object instanceof Double) + return Json.value((Double)object); + else if(object instanceof String) + return Json.value((String)object); + else if(object instanceof Collection) + return collectionAsJsonArray((Collection)object); + else if(object instanceof Map) + return mapAsJsonObject((Map)object); + else return null; + } + public static JsonArray collectionAsJsonArray(Collection collection) { + JsonArray array = new JsonArray(); + for(Object element:collection) + array.add(objectAsJsonValue(element)); + return array; + } + public static JsonObject mapAsJsonObject(Map map) { + JsonObject object = new JsonObject(); + for(Entry entry:map.entrySet()) + object.add(String.valueOf(entry.getKey()), + objectAsJsonValue(entry.getValue())); + return object; + } +} \ No newline at end of file From e14f086795531569d472ab07b7d47e75632092d0 Mon Sep 17 00:00:00 2001 From: Kristian Kraljic Date: Tue, 22 Sep 2015 09:22:32 +0200 Subject: [PATCH 2/3] Removed diamond operator to be compliant to Java 1.5 --- .../src/main/java/com/eclipsesource/json/JsonHelper.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java b/com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java index 78abc10..e00b69e 100644 --- a/com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java +++ b/com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java @@ -50,19 +50,19 @@ else if(value.isObject()) else return null; } public static Set jsonArrayAsSet(JsonArray array) { - Set set = new HashSet<>(); + Set set = new HashSet(); for(JsonValue value:array) set.add(jsonValueAsObject(value)); return set; } public static List jsonArrayAsList(JsonArray array) { - List list = new ArrayList<>(); + List list = new ArrayList(); for(JsonValue element:array) list.add(jsonValueAsObject(element)); return list; } public static Map jsonObjectAsMap(JsonObject object) { - Map map = new HashMap<>(); + Map map = new HashMap(); for(JsonObject.Member member:object) map.put(member.getName(), jsonValueAsObject(member.getValue())); return map; From 242fa14799642c2a3317c44e8790fffff883493e Mon Sep 17 00:00:00 2001 From: Kristian Kraljic Date: Sat, 26 Sep 2015 16:54:13 +0200 Subject: [PATCH 3/3] Set initial size for lists and maps --- .../src/main/java/com/eclipsesource/json/JsonHelper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java b/com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java index e00b69e..929ce3e 100644 --- a/com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java +++ b/com.eclipsesource.json/src/main/java/com/eclipsesource/json/JsonHelper.java @@ -56,13 +56,13 @@ public static Set jsonArrayAsSet(JsonArray array) { return set; } public static List jsonArrayAsList(JsonArray array) { - List list = new ArrayList(); + List list = new ArrayList(array.size()); for(JsonValue element:array) list.add(jsonValueAsObject(element)); return list; } public static Map jsonObjectAsMap(JsonObject object) { - Map map = new HashMap(); + Map map = new HashMap(object.size(), 1.f); for(JsonObject.Member member:object) map.put(member.getName(), jsonValueAsObject(member.getValue())); return map;