feign调用接口中,实体类中的Date类型字段转换异常的问题

记在feign调用中,因为实体中有Date类型的字段,导致系列化时报错,最终导致调用失败。

feign.codec.DecodeException: JSON parse error: Can not deserialize value of type java.util.Date from String "2018-03-07 16:18:35": not a valid representation (error: Failed to parse Date value '2018-03-07 16:18:35': Can not parse date "2018-03-07 16:18:35Z": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS'Z'', parsing fails (leniency? null)); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type java.util.Date from String "2018-03-07 16:18:35": not a valid representation (error: Failed to parse Date value '2018-03-07 16:18:35': Can not parse date "2018-03-07 16:18:35Z": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS'Z'', parsing fails (leniency? null))
 at [Source: java.io.PushbackInputStream@4615bc00; line: 1, column: 696] (through reference chain: com.RestfulDataBean["data"]->java.util.ArrayList[0]->com.entity.XxxDto["createTime"])
	at feign.SynchronousMethodHandler.decode(SynchronousMethodHandler.java:169)
	

引用参考文章
因为我们平时的都是yyyy-MM-dd HH:mm:ss用得比较多,但是Jackjson不支持此格式,所以需要自定义一个转换类
自定义类可以参照参考文章写。
有一个注意的点是:
构造函数需要对calendar赋值,不然启动的时候会报空指针异常

public JackJosonDateFormat(DateFormat dateFormat) {
		this.dateFormat = dateFormat;
		calendar = Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of("+8")));
	}

版权声明:本文为Haiking_li原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。