com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException反序列化异常

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException 

出现这种问题的情况是由于JSON里面包含了实体没有的字段导致反序列化失败。

序列化的代码

@Override
public ResultDTO<HbZxVerifyStateDTO> getVerifyState(String type, String id) {
        try {
            String resultStr = webservice.getggStatus(DesHelper.DESEnCode(type, encryptKey),
                    DesHelper.DESEnCode(id, encryptKey), platformCode);
            logger.debug("-------------  getggStatus result is:" + resultStr);
            //问题出现再下面的一行
            HbZxVerifyStateDTO verifyStateDTO = JsonHelper.readValueCustom(resultStr, HbZxVerifyStateDTO.class);
            ResultDTO<HbZxVerifyStateDTO> result = new ResultDTO<HbZxVerifyStateDTO>();
            result.setSuccess(true);
            result.setData(verifyStateDTO);
            return result;
        } catch (Exception e) {
            throw new ServiceException("审核状态失败!", e);
        }
    }

 

报错信息

2019-07-03 11:15 DEBUG c.s.e.g.h.s.HbZxDockServiceImpl - -------------  getggStatus result is:{"yj":"公告字段scopeofbid为空,公告code=S1301000274001258001001无需审批核准备案的 ,不再推送监管部门.","bj":"2","shdw":{}}
2019-07-03 11:15 WARN  c.s.f.m.c.BaseController - An Exception has been resolved by base exception handler:
com.sino.framework.exception.ServiceException: 审核状态失败!
        at com.sino.ebid.gp.hbzx.service.HbZxDockServiceImpl.getVerifyState(HbZxDockServiceImpl.java:358)
        at com.sino.ebid.gp.hbzx.service.HbZxDockServiceImpl$$FastClassBySpringCGLIB$$5ef0ccf4.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
        at com.alibaba.druid.support.spring.stat.DruidStatInterceptor.invoke(DruidStatInterceptor.java:72)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
        at com.sino.ebid.gp.hbzx.service.HbZxDockServiceImpl$$EnhancerBySpringCGLIB$$39f1b0ca.getVerifyState(<generated>)
        at com.sino.ebid.hbzx.biz.HbZxQueryInfoBiz.getVerifyState(HbZxQueryInfoBiz.java:83)
        at com.sino.ebid.hbzx.biz.HbZxQueryInfoBiz$$FastClassBySpringCGLIB$$d71df7fa.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
        at com.alibaba.druid.support.spring.stat.DruidStatInterceptor.invoke(DruidStatInterceptor.java:72)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
        at com.sino.ebid.hbzx.biz.HbZxQueryInfoBiz$$EnhancerBySpringCGLIB$$3c31459c.getVerifyState(<generated>)
        at com.sino.ebid.hbzx.controller.HbZxQueryInfoController.getVerifyState(HbZxQueryInfoController.java:87)
        at com.sino.ebid.hbzx.controller.HbZxQueryInfoController$$FastClassBySpringCGLIB$$9ba685b2.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
        at com.alibaba.druid.support.spring.stat.DruidStatInterceptor.invoke(DruidStatInterceptor.java:72)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
        at com.sino.ebid.hbzx.controller.HbZxQueryInfoController$$EnhancerBySpringCGLIB$$60d541c4.getVerifyState(<generated>)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2503)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2492)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.UndeclaredThrowableException: null
        at org.springframework.util.ReflectionUtils.handleReflectionException(ReflectionUtils.java:285)
        at com.sino.framework.util.JsonHelper.readValueCustom(JsonHelper.java:63)
        at com.sino.ebid.gp.hbzx.service.HbZxDockServiceImpl.getVerifyState(HbZxDockServiceImpl.java:352)
        ... 72 common frames omitted
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "shdw" (class com.sino.ebid.hbzx.dto.HbZxVerifyStateDTO), not marked as ignorable (2 known properties: "bj", "yj"])
 at [Source: {"yj":"公告字段scopeofbid为空,公告code=S1301000274001258001001无需审批核准备案的 ,不再推送监管部门.","bj":"2","shdw":{}}; line: 1, column: 94] (through reference chain: com.sino.ebid.hbzx.dto.HbZxVerifyStateDTO["shdw"])
        at
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:62)
        at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:834)
        at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1093)
        at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1478)
        at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1456)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:282)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3798)
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2842)
        at com.sino.framework.util.JsonHelper.readValueCustom(JsonHelper.java:61)
        ... 73 common frames omitted

Unrecognized field "shdw" (class com.sino.ebid.hbzx.dto.HbZxVerifyStateDTO)

由这个报错信息可以看出,我的HbZxVerifyStateDTO类中没有定义shdw这个属性,导致的序列化失败

解决

本来就是添加个字段的事情,可是因为我看错了

{"yj":"公告字段scopeofbid为空,公告code=S1301000274001258001001无需审批核准备案的 ,不再推送监管部门.","bj":"2","shdw":{}}

以至于shdw的属性数据类型选择错误,居然用ArrayList来接  -------》如果属性的类型不对,还会报其他类型的反序列化错误

正确的应该Object或者Map类的来接

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@程序员小袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值