Can not deserialize value of type java.util.Date from String异常解决办法
问题描述:今天在用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异常解决办法相关推荐
- 选择日期保存报错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 ...
- 【Java异常】Cannot deserialize value of type `java.util.Date` from String “2020-04-27T19:43:05.000+0800
本文目录 一.背景描述 二.现象描述 三.错误原因 四.解决方案 一.背景描述 环境:SpringCloud Fegin调用 服务端(被调用者):返回了一个JSON对象,其中有一个createTime ...
- 解决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 ...
- 【踩坑专栏】JSON parse error: Cannot deserialize value of type `java.util.Date` from String
出现这种报错的原因是无法将Date字符串解析为Date类型,之前我的做法是在需要转换的字段上标注注解@DateFormatPatter和@JsonFormat 这一次我懒得一个个的标了,因为是自己做的 ...
- 关于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 ...
- 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 ...
- Failed to convert value of type 'java.lang.String' to required type 'java.util.Date
异常原因:Controller层获取JSP页面请求参数是String类型,而在Controller层接收时使用Date类型,属于方法参数类型不匹配异常 警告: Failed to bind reque ...
- spring:Failed to convert property value of type ‘java.lang.String‘ to required type ‘java.util.Date‘
前言 springboot有接口日期转换的经典问题,给Entity加@JsonFormat解决了输出json日期格式的输入输出问题,但是解决不了非@RequestBody/也就是普通表单提交的日期格式 ...
- 报错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 ...
最新文章
- Java面试题详解三:比较器
- 安全领域新概念:安全评级服务的兴起
- c语言作用域有哪两种变量,2017年计算机二级C语言字考点归纳:变量的存储类别、作用域及生存期...
- git reset用法
- 实时获取ccd图像_四元数数控:CCD视觉检测定位系统在玻璃瓶缺陷的检测
- 苦练IoT应用开发,还能加速变现,这个机会别错过
- Google 包庇 Android 之父还给了 9000 万美元,女工程师们怒了!
- python selenium 下拉框 页面变化_python-selenium之select下拉框
- HDU2153 仙人球的残影【数学计算+水题】
- Spark StructType 类型详解
- Section 2.2
- 图像处理-图像尺寸变换
- 二、三角高程测量计算(C#语言)
- powerBI发布到web,管理员权限设置
- TRNSYS与MATLAB联合仿真
- 机器学习——概率模型
- 东方联盟郭盛华:物联网安全是供应链问题
- JAVA编写弹珠(弹珠)小游戏
- 国潮风彩色手绘年俗年画春节插画素材
- clion设置为中文_手把手教你去除CLion的中文字符乱码
热门文章
- Keras封装实现经典深度网络框架 VGG-16, ZF-Net,Alex-Net,LeNet,Google-Net,ResNet, DenseNet-50
- 高考今日放榜!全国最牛的AI专业院校TOP10有哪些?来看看你学校上榜了没!
- IEEE754运算中移码与阶码变换关系的理解
- 计算机中的大端与小端
- 2022年广西最新建筑施工焊工(建筑特种作业)模拟试题及答案
- word 为数学公式添加编号
- RISC-V 分支预测
- 转:领导者实现事半功倍的抓手,是充分帮助下属成长
- 众人围剿,GPT-5招惹了谁
- linux中ftp怎么进不去,FTP进不去怎么办?FTP老进不去解决方法