diff options
Diffstat (limited to 'holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java')
-rw-r--r-- | holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java | 80 |
1 files changed, 58 insertions, 22 deletions
diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java b/holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java index 452aaf8..a5e6461 100644 --- a/holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java +++ b/holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java @@ -1,5 +1,5 @@ /** - * Copyright 2018 ZTE Corporation. + * Copyright 2018-2020 ZTE Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,28 +17,25 @@ package org.onap.holmes.common.utils; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; -import com.google.gson.JsonParseException; +import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; -import java.lang.reflect.Type; +import org.apache.commons.lang3.StringUtils; + import java.util.List; import java.util.Map; public class GsonUtil { private static Gson gson = null; + static { if (gson == null) { gson = new GsonBuilder() - .registerTypeAdapter(Integer.class, new JsonDeserializer<Integer>() { - @Override - public Integer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - try { - return json.getAsInt(); - } catch (NumberFormatException e) { - return 0; - } + .registerTypeAdapter(Integer.class, (JsonDeserializer<Integer>) (json, typeOfT, context) -> { + try { + return json.getAsInt(); + } catch (NumberFormatException e) { + return 0; } }) .create(); @@ -65,31 +62,70 @@ public class GsonUtil { return t; } - public static <T> List<T> GsonToList(String gsonString, Class<T> cls) { + public static <T> List<T> jsonToList(String gsonString, Class<T> cls) { List<T> list = null; if (gson != null) { - list = gson.fromJson(gsonString, new TypeToken<List<T>>() { - }.getType()); + list = gson.fromJson(gsonString, TypeToken.getParameterized(List.class, cls).getType()); } return list; } - public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) { + public static <T> List<Map<String, T>> jsonToListMaps(String gsonString, Class<T> cls) { List<Map<String, T>> list = null; if (gson != null) { list = gson.fromJson(gsonString, - new TypeToken<List<Map<String, T>>>() { - }.getType()); + TypeToken.getParameterized(List.class, + TypeToken.getParameterized(Map.class, String.class, cls).getType() + ).getType() + ); } return list; } - public static <T> Map<String, T> GsonToMaps(String gsonString) { + public static <T> Map<String, T> jsonToMap(String gsonString, Class<T> cls) { Map<String, T> map = null; if (gson != null) { - map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() { - }.getType()); + map = gson.fromJson(gsonString, TypeToken.getParameterized(Map.class, String.class, cls).getType()); } return map; } + + public static String getAsString(JsonObject o, String field) { + String ret = null; + + if (field == null) { + field = StringUtils.EMPTY; + } + + if (o.has(field) && !o.get(field).isJsonNull()) { + ret = o.get(field).getAsString(); + } + return ret; + } + + public static long getAsLong(JsonObject o, String field) { + long ret = 0; + + if (field == null) { + field = StringUtils.EMPTY; + } + + if (o.has(field) && !o.get(field).isJsonNull()) { + ret = o.get(field).getAsLong(); + } + return ret; + } + + public static int getAsInt(JsonObject o, String field) { + int ret = 0; + + if (field == null) { + field = StringUtils.EMPTY; + } + + if (o.has(field) && !o.get(field).isJsonNull()) { + ret = o.get(field).getAsInt(); + } + return ret; + } } |