问题描述:今天在用swagger2接口测试文档,调试接口时,传递日期值时报以下异常:

Can not deserialize value of type java.util.Date from String异常

Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type java.util.Date from String "2018-06-14": not a valid representation (error: Failed to parse Date value '2018-06-14': Unparseable date: "2018-06-14")at [Source: java.io.PushbackInputStream@23800c4c; line: 3, column: 21] (through reference chain: com.bootdo.cheng.vo.UserRegisterVO["graduationYear"])at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:74)at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1410)at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:926)at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseDate(StdDeserializer.java:819)at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseDate(StdDeserializer.java:788)at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateBasedDeserializer._parseDate(DateDeserializers.java:172)at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:259)at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:242)at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:504)at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:104)at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:357)at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:148)at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814)at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2938)at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:235)... 78 common frames omitted

如图所示:

问题原因:由于前端传递过来的是日期字符串格式的值,而SpringMVC无法将日期字符串格式的值解析为日期格式

解决方法一:

新增一个类继承 org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter  父类 覆写父类的configureMessageConverters方法,增加MappingJackson2HttpMessageConverter类型的对象值

代码如下:

package com.bootdo.common.config;import java.text.DateFormat;
import java.util.ArrayList;
import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import com.fasterxml.jackson.databind.ObjectMapper;@Component
class WebConfigurer extends WebMvcConfigurerAdapter {@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();//设置日期格式ObjectMapper objectMapper = new ObjectMapper();/*SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd");objectMapper.setDateFormat(smt);*/mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);//设置中文编码格式List<MediaType> list = new ArrayList<MediaType>();list.add(MediaType.APPLICATION_JSON_UTF8);mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);converters.add(mappingJackson2HttpMessageConverter);super.configureMessageConverters(converters);}}

解决办法二:

新增一个配置类,返回类型为MappingJackson2HttpMessageConverter的bean

代码如下:

package com.fhsn.weixin.config;import java.util.ArrayList;
import java.util.List;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import com.fasterxml.jackson.databind.ObjectMapper;
import com.fhsn.weixin.OAuth2;
import com.fhsn.weixin.Weixin;
import com.fhsn.weixin.cache.ITokenCache;@Configuration
public class WebWeixinConfig {@Beanpublic MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();//设置日期格式ObjectMapper objectMapper = new ObjectMapper();mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);//设置中文编码格式List<MediaType> list = new ArrayList<MediaType>();list.add(MediaType.APPLICATION_JSON_UTF8);mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);return mappingJackson2HttpMessageConverter;}}

Can not deserialize value of type java.util.Date from String异常解决办法相关推荐

  1. 选择日期保存报错Invalid JSON input: Cannot deserialize value of type `java.util.Date` from String......

    (spring boot + vue) 1.新增-选择日期-点击保存-报错:报错信息 "Invalid JSON input: Cannot deserialize value of typ ...

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

    本文目录 一.背景描述 二.现象描述 三.错误原因 四.解决方案 一.背景描述 环境:SpringCloud Fegin调用 服务端(被调用者):返回了一个JSON对象,其中有一个createTime ...

  3. 解决feign调用序列化日期时间失败 Cannot deserialize value of type `java.util.Date` from String “2020-09-07 18:36:“

    feign远程调用报错,不能序列化,把字符串的时间格式化成data类型 feign.codec.DecodeException: Error while extracting response for ...

  4. 【踩坑专栏】JSON parse error: Cannot deserialize value of type `java.util.Date` from String

    出现这种报错的原因是无法将Date字符串解析为Date类型,之前我的做法是在需要转换的字段上标注注解@DateFormatPatter和@JsonFormat 这一次我懒得一个个的标了,因为是自己做的 ...

  5. 关于JackJson接收前端UTC格式化报错SON parse error: Cannot deserialize value of type `java.util.Date` from String

    #解决方式 在格式化的字段上加上注解 @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",timezone = "G ...

  6. Cannot deserialize value of type `java.util.ArrayList<com.trunk.common.core.po.xxx>` fr

    Cannot deserialize value of type `java.util.ArrayList<com.trunk.common.core.po.xxx>` from Obje ...

  7. Failed to convert value of type 'java.lang.String' to required type 'java.util.Date

    异常原因:Controller层获取JSP页面请求参数是String类型,而在Controller层接收时使用Date类型,属于方法参数类型不匹配异常 警告: Failed to bind reque ...

  8. spring:Failed to convert property value of type ‘java.lang.String‘ to required type ‘java.util.Date‘

    前言 springboot有接口日期转换的经典问题,给Entity加@JsonFormat解决了输出json日期格式的输入输出问题,但是解决不了非@RequestBody/也就是普通表单提交的日期格式 ...

  9. 报错JSON parse error: Cannot deserialize value of type `java.lang.Integer` from String

    前端界面报错 JSON parse error: Cannot deserialize value of type java.lang.Integer from String "777777 ...

最新文章

  1. Java面试题详解三:比较器
  2. 安全领域新概念:安全评级服务的兴起
  3. c语言作用域有哪两种变量,2017年计算机二级C语言字考点归纳:变量的存储类别、作用域及生存期...
  4. git reset用法
  5. 实时获取ccd图像_四元数数控:CCD视觉检测定位系统在玻璃瓶缺陷的检测
  6. 苦练IoT应用开发,还能加速变现,这个机会别错过
  7. Google 包庇 Android 之父还给了 9000 万美元,女工程师们怒了!
  8. python selenium 下拉框 页面变化_python-selenium之select下拉框
  9. HDU2153 仙人球的残影【数学计算+水题】
  10. Spark StructType 类型详解
  11. Section 2.2
  12. 图像处理-图像尺寸变换
  13. 二、三角高程测量计算(C#语言)
  14. powerBI发布到web,管理员权限设置
  15. TRNSYS与MATLAB联合仿真
  16. 机器学习——概率模型
  17. 东方联盟郭盛华:物联网安全是供应链问题
  18. JAVA编写弹珠(弹珠)小游戏
  19. 国潮风彩色手绘年俗年画春节插画素材
  20. clion设置为中文_手把手教你去除CLion的中文字符乱码

热门文章

  1. Keras封装实现经典深度网络框架 VGG-16, ZF-Net,Alex-Net,LeNet,Google-Net,ResNet, DenseNet-50
  2. 高考今日放榜!全国最牛的AI专业院校TOP10有哪些?来看看你学校上榜了没!
  3. IEEE754运算中移码与阶码变换关系的理解
  4. 计算机中的大端与小端
  5. 2022年广西最新建筑施工焊工(建筑特种作业)模拟试题及答案
  6. word 为数学公式添加编号
  7. RISC-V 分支预测
  8. 转:领导者实现事半功倍的抓手,是充分帮助下属成长
  9. 众人围剿,GPT-5招惹了谁
  10. linux中ftp怎么进不去,FTP进不去怎么办?FTP老进不去解决方法