diff --git a/src/main/java/com/dispose/restful/RestfulInterface.java b/src/main/java/com/dispose/restful/RestfulInterface.java index a3372bb5..ce60346e 100644 --- a/src/main/java/com/dispose/restful/RestfulInterface.java +++ b/src/main/java/com/dispose/restful/RestfulInterface.java @@ -7,6 +7,7 @@ import com.dispose.common.ConstValue; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMethod; @@ -27,6 +28,11 @@ public class RestfulInterface { * The constant OBJECT_MAPPER. */ private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + static { + OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } + /** * The constant timeOutValue. */ diff --git a/src/test/java/com/dispose/test/dev/debug/demo.java b/src/test/java/com/dispose/test/dev/debug/demo.java index 2f955ab6..f6481969 100644 --- a/src/test/java/com/dispose/test/dev/debug/demo.java +++ b/src/test/java/com/dispose/test/dev/debug/demo.java @@ -1,5 +1,6 @@ package com.dispose.test.dev.debug; +import com.fasterxml.jackson.core.type.TypeReference; import com.dispose.common.ConstValue; import com.dispose.common.DDoSAttackType; import com.dispose.common.DisposeConfigValue; @@ -8,21 +9,26 @@ import com.dispose.common.Helper; import com.dispose.common.HttpType; import com.dispose.common.ObjectStatus; import com.dispose.common.PrivacyHelper; +import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; import com.dispose.pojo.entity.DisposeDevice; import com.dispose.security.arithmetic.CryptoHelper; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import com.pengxin.dispose.common.PengXinStartTaskRsp; import inet.ipaddr.IPAddress; import inet.ipaddr.IPAddressString; import lombok.extern.slf4j.Slf4j; import org.junit.Assert; import org.junit.Test; +import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl; import javax.crypto.BadPaddingException; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import java.lang.reflect.Field; import java.lang.reflect.Modifier; +import java.lang.reflect.Type; import java.nio.charset.StandardCharsets; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; @@ -82,6 +88,35 @@ public class demo { Assert.assertTrue(Helper.ipInRange("::", "::abcd")); } + private static Type createRespType(Class c) { + Type[] types = new Type[1]; + types[0] = c; + return ParameterizedTypeImpl.make(ProtocolRespDTO.class, types, + ProtocolRespDTO.class.getDeclaringClass()); + } + + @Test + public void json_test() { + ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + String json = "{\"ver\":1,\"cryptoType\":0,\"timeStamp\":1634780505248,\"code\":200,\"msgContent\":{\"deviceName\":\"okp\",\"items\":[{\"taskReqId\":\"1634780428667\"," + + "\"taskId\":\"c285c206-0e4e-45f5-beab-9ac21eaf4769\",\"status\":0,\"message\":\"SUCCESS\",\"taskInfo\":\"192.168.123.126\"}]}}"; + try { + ProtocolRespDTO rspInfo = OBJECT_MAPPER.readValue(json, + new TypeReference>() { + @Override + public Type getType() { + return createRespType(PengXinStartTaskRsp.class); + } + }); + + log.info("Ret: {}", rspInfo); + } catch (Exception ex) { + log.error("Exception: {}", ex.getMessage()); + } + + } + /** * Date time debug. */