• 【Java异常】Cannot deserialize value of type `java.util.Date` from String “2020-04-27T19:43:05.000+0800


    本文目录

    一、背景描述

    二、现象描述

    三、错误原因

    四、解决方案


    一、背景描述

    环境:SpringCloud Fegin调用

    服务端(被调用者):返回了一个JSON对象,其中有一个createTime字段,格式是java.sql.Timestamp。

    客户端(调用者):使用对象整体接收参数,其中createTime字段对应类型是'yyyy-MM-dd HH:mm:ss'。

    Caused by: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.Date` from String "2020-04-27T19:43:05.000+0800": not a valid representation (error: Failed to parse Date value '2020-04-27T19:43:05.000+0800': Unparseable date: "2020-04-27T19:43:05.000+0800"); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2020-04-27T19:43:05.000+0800": not a valid representation (error: Failed to parse Date value '2020-04-27T19:43:05.000+0800': Unparseable date: "2020-04-27T19:43:05.000+0800")
     
    Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2020-04-27T19:43:05.000+0800": not a valid representation (error: Failed to parse Date value '2020-04-27T19:43:05.000+0800': Unparseable date: "2020-04-27T19:43:05.000+0800")

    二、现象描述

    Caused by: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.Date` from String "2020-04-27T19:43:05.000+0800": not a valid representation (error: Failed to parse Date value '2020-04-27T19:43:05.000+0800': Unparseable date: "2020-04-27T19:43:05.000+0800"); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2020-04-27T19:43:05.000+0800": not a valid representation (error: Failed to parse Date value '2020-04-27T19:43:05.000+0800': Unparseable date: "2020-04-27T19:43:05.000+0800")
     at [Source: (PushbackInputStream); line: 1, column: 217] (through reference chain: com.uiotsoft.framework.core.response.CommResponse["data"]->com.uiotsoft.back.thirdpartycloud.api.response.SmsTemplateResponse["createTime"])
    	at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:245)
    	at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:227)
    	at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:102)
    	... 37 common frames omitted
    Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2020-04-27T19:43:05.000+0800": not a valid representation (error: Failed to parse Date value '2020-04-27T19:43:05.000+0800': Unparseable date: "2020-04-27T19:43:05.000+0800")
     at [Source: (PushbackInputStream); line: 1, column: 217] (through reference chain: com.uiotsoft.framework.core.response.CommResponse["data"]->com.uiotsoft.back.thirdpartycloud.api.response.SmsTemplateResponse["createTime"])
    	at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)
    	at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1549)
    	at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:911)
    	at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseDate(StdDeserializer.java:524)
    	at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseDate(StdDeserializer.java:467)
    	at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateBasedDeserializer._parseDate(DateDeserializers.java:195)
    	at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:285)
    	at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:268)
    	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:369)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
    	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:530)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:528)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:417)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1287)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:326)
    	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
    	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
    	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3084)
    	at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:239)
    	... 39 common frames omitted
    

    三、错误原因

    调用者需要的格式是“yyyy-MM-dd HH:mm:ss”,而被调用者返回的确是java.sql.Timestamp类型的,类型不匹配,导致类型转换错误。

    四、解决方案

    在配置文件中加上如下配置即可

    jackson:
        date-format: yyyy-MM-dd HH:mm:ss
        time-zone: GMT+8

    spring:
      profiles:
        active: local
      cloud:
        zookeeper:
          discovery:
            enabled: true
            register: true
            root: /uiotsoft-service
          connectString: localhost:2181
      application:
        name: back-third-party-cloud-service
      jackson:
        date-format: yyyy-MM-dd HH:mm:ss
        time-zone: GMT+8
  • 相关阅读:
    Linux下的压缩zip,解压缩unzip命令详解及实例
    org.hibernate.type.SerializationException: could not deserialize 反序列化失败
    oracle操作小计
    gradle项目与maven项目互转
    IntelliJ IDEA创建maven web项目(IDEA新手适用)
    数据结构篇——字典树(trie树)
    数据结构篇——并查集
    数据结构篇——优先级队列(堆)
    数据结构篇——平衡二叉树(AVL树)
    数据结构篇——二叉排序(查找,搜索)树
  • 原文地址:https://www.cnblogs.com/no8g/p/13415492.html
Copyright © 2020-2023  润新知