diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/api/JsonFacade.java b/hippo4j-common/src/main/java/cn/hippo4j/common/api/JsonFacade.java index eb72bfb9..c5f3213f 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/api/JsonFacade.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/api/JsonFacade.java @@ -17,6 +17,8 @@ package cn.hippo4j.common.api; +import com.fasterxml.jackson.core.type.TypeReference; + import java.util.List; /** @@ -42,6 +44,16 @@ public interface JsonFacade { */ T parseObject(String text, Class clazz); + /** + * Parse object. + * + * @param text + * @param valueTypeRef + * @param + * @return + */ + T parseObject(String text, TypeReference valueTypeRef); + /** * Parse array. * diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/JSONUtil.java b/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/JSONUtil.java index 33dbe282..f3938ec6 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/JSONUtil.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/JSONUtil.java @@ -18,6 +18,7 @@ package cn.hippo4j.common.toolkit; import cn.hippo4j.common.api.JsonFacade; +import com.fasterxml.jackson.core.type.TypeReference; import java.util.List; @@ -44,6 +45,14 @@ public class JSONUtil { return JSON_FACADE.parseObject(text, clazz); } + public static T parseObject(String text, TypeReference valueTypeRef) { + if (StringUtil.isBlank(text)) { + return null; + } + + return JSON_FACADE.parseObject(text, valueTypeRef); + } + public static List parseArray(String text, Class clazz) { if (StringUtil.isBlank(text)) { return null; diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/JacksonHandler.java b/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/JacksonHandler.java index 4e0a4676..1ba3d273 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/JacksonHandler.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/toolkit/JacksonHandler.java @@ -20,6 +20,7 @@ package cn.hippo4j.common.toolkit; import cn.hippo4j.common.api.JsonFacade; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; @@ -61,6 +62,12 @@ public class JacksonHandler implements JsonFacade { return MAPPER.readValue(text, javaType); } + @Override + @SneakyThrows + public T parseObject(String text, TypeReference valueTypeRef) { + return MAPPER.readValue(text, valueTypeRef); + } + @Override @SneakyThrows public List parseArray(String text, Class clazz) { diff --git a/hippo4j-config/src/main/java/cn/hippo4j/config/service/ThreadPoolAdapterService.java b/hippo4j-config/src/main/java/cn/hippo4j/config/service/ThreadPoolAdapterService.java index 4cc8beb8..90d24bad 100644 --- a/hippo4j-config/src/main/java/cn/hippo4j/config/service/ThreadPoolAdapterService.java +++ b/hippo4j-config/src/main/java/cn/hippo4j/config/service/ThreadPoolAdapterService.java @@ -30,6 +30,7 @@ import cn.hippo4j.config.model.biz.adapter.ThreadPoolAdapterReqDTO; import cn.hippo4j.config.model.biz.adapter.ThreadPoolAdapterRespDTO; import cn.hutool.core.text.StrBuilder; import cn.hutool.http.HttpUtil; +import com.fasterxml.jackson.core.type.TypeReference; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; @@ -105,7 +106,7 @@ public class ThreadPoolAdapterService { try { String resultStr = HttpUtil.get(urlString, param, HTTP_EXECUTE_TIMEOUT); if (StringUtil.isNotBlank(resultStr)) { - Result restResult = JSONUtil.parseObject(resultStr, Result.class); + Result restResult = JSONUtil.parseObject(resultStr, new TypeReference>(){}); result.add(restResult.getData()); } } catch (Throwable ex) {