报错信息
{"timestamp":"2022-07-12T08:52:13.502+00:00","status":400,"error":"BadRequest","message":"JSON parse error:Cannot deserialize value of type java.util.Datefrom String \"2022-07-31 00:00:00\": not a valid representatition (error:Failed to parse Date value '2022-07-31 00:00:00\": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSSX', parsing fails(leniency? null)); nested exception is com.fasterxml.jackson.exc.InvalidFormatException: Cannot deserialize value of typejava.util.Date from String \"2022-07-31 00:00:00\": not a valid representation (error: Failed to pase date value '2022-07-31 00:00:00': Cannot parse date \:"2022-07-31 00:00:00": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSSX', parsing fails (leniency? null)\n at [Source:(PushbackInputStream); line: 1, column: 236](through reference chain: com.nbcb.cpa.entity.dao.external.request.SeriesExtRequest["\couponList\"]->java.util.ArrayList[0]->com.nbcb.cpa.entity.dto.external.request.CouponAddExtRequest[\"endTime"\"])","path":"/base/series/add"}
问题原因
前后端的字符串格式不匹配
坑点
在网上搜索后 得知需要在指定字段前加注解
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
但是加了之后并不起作用
在f12 取到了request后发现插入数据库是缺少一个字段,当时也很疑惑怎么报的错还不一样呢
nested exception is java.sql.SQLIntegrityConstraintViolationException:ORA-01400: 无法将NULL插入("XXXDatabase", "XXXTable", "CreateUser")\n'
解决方法
等老大哥上班以后才知道 请求在进入服务前 有一个微服务进行了转发,缺少的字段也是在这个服务加入的
public class AClass(TargetRequest request){
LoginUser loginUser = CacheUtil.getLoginUser();
request.setCreateUser(loginUser.getUserId());
XXXutil.doRequest(request)
}
所以解决方法需要在这个类里把对应的 字段也加上 @JsonFormat 就完成了