jsonformat,jsonformat timezone
@JsonFormat 可以作用于timeStamp吗?还是只可以转换Date为String
if rv is not None and rsv is not None:
# extract version/subversion
self._nmap_version_number = int(line[rv.start():rv.end()])
self._nmap_subversion_number = int(line[rsv.start()+1:rsv.end()])
break
}
前后端时间格式
前端传毫秒
1、不加@JsonFormat
前端:1517191582000(毫秒)
后台:private Date trialTime;
列表返回的时间格式:毫秒
2、加@JsonFormat
① @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
前端:1517191582000(毫秒)
后台:
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date trialTime;
列表返回的时间格式:yyyy-MM-dd HH:mm:ss
② @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
前端:1517191582000(毫秒)
后台:
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
private Date trialTime;
列表返回的时间格式:yyyy-MM-dd
前端传"2018-01-03T02:01:13.678Z"
1、不加@JsonFormat
前端:"2018-01-03T02:01:13.678Z"
后台:private Date trialTime;
列表返回的时间格式:毫秒
2、加@JsonFormat
① 不支持"yyyy-MM-dd HH:mm:ss"这种格式
② 支持"yyyy-MM-dd"这种格式
前端:"2018-01-03T02:01:13.678Z"
后台:
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
private Date trialTime;
列表返回的时间格式:yyyy-MM-dd
前端传"yyyy-MM-dd HH:mm:ss"
1、不加@JsonFormat报错
2、加@JsonFormat
① 支持"yyyy-MM-dd HH:mm:ss"这种格式
前端:"yyyy-MM-dd HH:mm:ss"
后台:
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date trialTime;
列表返回的时间格式:yyyy-MM-dd HH:mm:ss
② 不支持"yyyy-MM-dd"这种格式,因为前端传的时间格式已经限定死了
前端传"yyyy-MM-dd"
1、不加@JsonFormat (注:get请求,但是是用@RequestParam Map formData接收的,所以不影响。见贵安项目ArticleListControl中articleInfo接口)
前端:"yyyy-MM-dd"
后台:private Date trialTime;
列表返回的时间格式:毫秒
2、加@JsonFormat
① 不支持"yyyy-MM-dd HH:mm:ss"这种格式
② 支持"yyyy-MM-dd"这种格式
前端:"yyyy-MM-dd"
后台:
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
private Date trialTime;
列表返回的时间格式:yyyy-MM-dd
总结
Jackson不支持这种时间格式的:yyyy-MM-dd HH:mm:ss,试了一下,果然报错来了
Can not construct instance of java.util.Date from String value '2015-12-22 10:10:10': not a valid representation (error: Failed to parse Date value '2015-12-22 10:10:10': Can not parse date "2015-12-22 10:10:10": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))
看提示好像只支持这几种:
"yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"
主要看前端到→后台是否需要序列化
get请求时
① 后台用 @ModelAttribute T model 方式接收前端数据,会把传进来的参数序列化成对象T,前端传的参数有一个是String类型的 2018-12-25 时间,但是对象T中是date类型,所以如果不做转换的话会报400错误,在对象T的对应参数上加 @DateTimeFormat(pattern = "yyyy-MM-dd") 。通过@DateTimeFormat这个日期格式化注解,就可以将前端传入的字符串格式化为日期类型可以识别的内容信息了。当然也可以使用@DateTimeFormat(iso=ISO.DATE)这样子的格式化来进行处理,效果是一样的。JsonFormat适用于json方式?
② 如果后台用 @RequestParam Map formData 接收前端参数的话,即使前端传的时间是 yyyy-MM-dd 方式也不会报错,因为Map可以接收任意类型的参数
post请求时
因为post请求是用 @RequestBody
@JsonFormat与@DateTimeFormat注解的使用
springmvc中jsonformat入参数不管用
项目中某一个接口使用@RequestBody将传入的Json字符串参数解析注入进封装的参数对象中,但是前台发送请求后却总是报错,一直提示json解析失败,但是在swagger中测试该接口却成功,于是开始了JSON参数的对比,并一点一点猜想并排除:是否String值的类型没有用双引号、是否布尔值需要双引号、是否字符编码不一样,最后在格式化工具的帮助下发现了问题。