From d723fee177238df0dbab80eb788876ebd154927d Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期四, 24 十月 2024 11:55:46 +0800 Subject: [PATCH] Update HDLLoginInterceptor.java --- HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/utils/HDLGsonUtils.java | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 158 insertions(+), 0 deletions(-) diff --git a/HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/utils/HDLGsonUtils.java b/HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/utils/HDLGsonUtils.java new file mode 100644 index 0000000..81b2e1a --- /dev/null +++ b/HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/utils/HDLGsonUtils.java @@ -0,0 +1,158 @@ +package com.hdl.linkpm.sdk.utils; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import com.google.gson.JsonSyntaxException; +import com.google.gson.reflect.TypeToken; + +import java.lang.reflect.Type; + +/** + * Created by Tong on 2021/11/10. + */ +public class HDLGsonUtils { + private static Gson gson; + + + public static <T> T fromJson(String json, Type type) { + Gson gson = getGson(); + return gson.fromJson(json, type); + } + + public static String toJson(Object object) { + return getGson().toJson(object); + } + + public static Gson getGson() { + if (gson == null) { + gson = new GsonBuilder() + .disableHtmlEscaping() + .registerTypeAdapter(String.class, new StringAdapter()) + .registerTypeAdapter(Integer.class, new IntegerDefault0Adapter()) + .registerTypeAdapter(Double.class, new DoubleDefault0Adapter()) + .registerTypeAdapter(Long.class, new LongDefault0Adapter()) + .create(); + } + return gson; + } + + private static class StringAdapter implements JsonSerializer<String>, JsonDeserializer<String> { + @Override + public String deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) + throws JsonParseException { + if (json instanceof JsonPrimitive) { + return json.getAsString(); + } else { + return json.toString(); + } + } + + @Override + public JsonElement serialize(String src, Type typeOfSrc, JsonSerializationContext context) { + return new JsonPrimitive(src); + } + } + + private static class IntegerDefault0Adapter implements JsonSerializer<Integer>, JsonDeserializer<Integer> { + @Override + public Integer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) + throws JsonParseException { + try { + if (json.getAsString().equals("") || json.getAsString().equals("null")) { + return 0; + } + } catch (Exception ignore) { + } + try { + return json.getAsInt(); + } catch (NumberFormatException e) { + throw new JsonSyntaxException(e); + } + } + + @Override + public JsonElement serialize(Integer src, Type typeOfSrc, JsonSerializationContext context) { + return new JsonPrimitive(src); + } + } + + private static class DoubleDefault0Adapter implements JsonSerializer<Double>, JsonDeserializer<Double> { + @Override + public Double deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + try { + if (json.getAsString().equals("") || json.getAsString().equals("null")) { + return 0.00; + } + } catch (Exception ignore) { + } + try { + return json.getAsDouble(); + } catch (NumberFormatException e) { + throw new JsonSyntaxException(e); + } + } + + @Override + public JsonElement serialize(Double src, Type typeOfSrc, JsonSerializationContext context) { + return new JsonPrimitive(src); + } + } + + private static class LongDefault0Adapter implements JsonSerializer<Long>, JsonDeserializer<Long> { + @Override + public Long deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) + throws JsonParseException { + try { + if (json.getAsString().equals("") || json.getAsString().equals("null")) { + return 0L; + } + } catch (Exception ignore) { + } + try { + return json.getAsLong(); + } catch (NumberFormatException e) { + throw new JsonSyntaxException(e); + } + } + + @Override + public JsonElement serialize(Long src, Type typeOfSrc, JsonSerializationContext context) { + return new JsonPrimitive(src); + } + } + + /** + * + * @param o + * @param <T> + * @return + */ + public static <T> JsonArray toJsonArray(Object o) { + try { + return getGson().fromJson(HDLGsonUtils.toJson(o), new TypeToken<JsonArray>() { + }.getType()); + } catch (Exception e) { + return null; + } + } + + /** + * copyProperties + * @param o + * @param type + * @param <T> + * @return + */ + public static <T> T copyProperties(Object o, Type type) { + Gson gson = getGson(); + return gson.fromJson(gson.toJson(o), type); + } +} -- Gitblit v1.8.0