REM:
1. Json解析时直接忽略不存在的字段,避免json解析异常
This commit is contained in:
HuangXin 2021-10-21 10:41:42 +08:00
parent 6a69040854
commit d93442fa4f
2 changed files with 41 additions and 0 deletions

View File

@ -7,6 +7,7 @@ import com.dispose.common.ConstValue;
import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
@ -27,6 +28,11 @@ public class RestfulInterface {
* The constant OBJECT_MAPPER. * The constant OBJECT_MAPPER.
*/ */
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
static {
OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
/** /**
* The constant timeOutValue. * The constant timeOutValue.
*/ */

View File

@ -1,5 +1,6 @@
package com.dispose.test.dev.debug; package com.dispose.test.dev.debug;
import com.fasterxml.jackson.core.type.TypeReference;
import com.dispose.common.ConstValue; import com.dispose.common.ConstValue;
import com.dispose.common.DDoSAttackType; import com.dispose.common.DDoSAttackType;
import com.dispose.common.DisposeConfigValue; import com.dispose.common.DisposeConfigValue;
@ -8,21 +9,26 @@ import com.dispose.common.Helper;
import com.dispose.common.HttpType; import com.dispose.common.HttpType;
import com.dispose.common.ObjectStatus; import com.dispose.common.ObjectStatus;
import com.dispose.common.PrivacyHelper; import com.dispose.common.PrivacyHelper;
import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO;
import com.dispose.pojo.entity.DisposeDevice; import com.dispose.pojo.entity.DisposeDevice;
import com.dispose.security.arithmetic.CryptoHelper; import com.dispose.security.arithmetic.CryptoHelper;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.pengxin.dispose.common.PengXinStartTaskRsp;
import inet.ipaddr.IPAddress; import inet.ipaddr.IPAddress;
import inet.ipaddr.IPAddressString; import inet.ipaddr.IPAddressString;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;
import javax.crypto.BadPaddingException; import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException; import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException; import javax.crypto.NoSuchPaddingException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException; import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
@ -82,6 +88,35 @@ public class demo {
Assert.assertTrue(Helper.ipInRange("::", "::abcd")); Assert.assertTrue(Helper.ipInRange("::", "::abcd"));
} }
private static <T> Type createRespType(Class<T> 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<PengXinStartTaskRsp> rspInfo = OBJECT_MAPPER.readValue(json,
new TypeReference<ProtocolRespDTO<PengXinStartTaskRsp>>() {
@Override
public Type getType() {
return createRespType(PengXinStartTaskRsp.class);
}
});
log.info("Ret: {}", rspInfo);
} catch (Exception ex) {
log.error("Exception: {}", ex.getMessage());
}
}
/** /**
* Date time debug. * Date time debug.
*/ */