在Spring MVC中使用FastJsonHttpMessageConverter,设置默认的日期格式化格式yyyy-MM-dd HH:mm,那么当在Controller中返回实体类的时候日期字段上标注了@JSONField(format = "yyyy-MM-dd"),但是这个注解不生效,转化后的json字符串日期格式仍然是yyyy-MM-dd HH:mm格式。应该是细粒度的指定日期格式优先级比较高,望回复,谢谢!
jexiocij1#
什么版本?
6yjfywim2#
开始是1.2.9版本,后来更换到了1.2.12还是有这个问题,看到这么一篇博客FastJsonHttpMessageConverter设置dateFormat后导致JSONField注解format失效解决办法,说了他分析的原因
zynd9foi3#
这个问题应该是已经修正了啊,你确定1.2.12还存在这样的问题?
dzhpxtsq4#
刚才我又重新确认并测试了一下,1.2.12版本确实还存在这个问题。只要是FastJsonHttpMessageConverter配置了dateFormat,那么@JSONField(format = "yyyy-MM-dd")就失效了,如果不配置dateFormat,@JSONField(format = "yyyy-MM-dd")是生效的
k5hmc34c5#
这个是修复了,我这边测试正常,只有在Android版本下才有问题
juzqafwq6#
我重新写了一个的demo,问题依然存在
0、spring mvc配置文件配置:
1、返回实体bean
2、控制器
3、浏览器查看到的结果:
如果把Spring mvc的配置文件配置改成这样(去掉dateFormat配置)
那么得到的结果是正常的(也就是@JSONField中format配置是生效的)
刚才看到发新版了,我又使用1.2.13测试了一下,没有改变。
如果方便的话能提供一个测试正常的demo吗,多谢!
z0qdvdin7#
最新版本也存在这个问题。
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.23</version> </dependency>
ckx4rj1h8#
这个问题解决了吗,我也出现这个问题了。
5sxhfpxr9#
1.2.44这个问题依然存在
gywdnpxw10#
1.2.47还在
efzxgjgh11#
1.2.49还在
ykejflvf12#
1.2.51还在,这里逻辑不合理public class JSONSerializer extends SerializeFilterable {...public final void writeWithFormat(Object object, String format) {if (object instanceof Date) {DateFormat dateFormat = this.getDateFormat();//如果设置了DateFormat,不会进入ifif (dateFormat == null) {dateFormat = new SimpleDateFormat(format, locale);dateFormat.setTimeZone(timeZone);}String text = dateFormat.format((Date) object);out.writeString(text);return;}.......}
k3bvogb113#
1.2.58 仍然存在
d7v8vwbk14#
居然是2016年的问题,还会修复吗? @wenshao
14条答案
按热度按时间jexiocij1#
什么版本?
6yjfywim2#
开始是1.2.9版本,后来更换到了1.2.12还是有这个问题,看到这么一篇博客FastJsonHttpMessageConverter设置dateFormat后导致JSONField注解format失效解决办法,说了他分析的原因
zynd9foi3#
这个问题应该是已经修正了啊,你确定1.2.12还存在这样的问题?
dzhpxtsq4#
刚才我又重新确认并测试了一下,1.2.12版本确实还存在这个问题。只要是FastJsonHttpMessageConverter配置了dateFormat,那么@JSONField(format = "yyyy-MM-dd")就失效了,如果不配置dateFormat,@JSONField(format = "yyyy-MM-dd")是生效的
k5hmc34c5#
这个是修复了,我这边测试正常,只有在Android版本下才有问题
juzqafwq6#
我重新写了一个的demo,问题依然存在
0、spring mvc配置文件配置:
1、返回实体bean
2、控制器
3、浏览器查看到的结果:
如果把Spring mvc的配置文件配置改成这样(去掉dateFormat配置)
那么得到的结果是正常的(也就是@JSONField中format配置是生效的)
刚才看到发新版了,我又使用1.2.13测试了一下,没有改变。
如果方便的话能提供一个测试正常的demo吗,多谢!
z0qdvdin7#
最新版本也存在这个问题。
ckx4rj1h8#
这个问题解决了吗,我也出现这个问题了。
5sxhfpxr9#
1.2.44这个问题依然存在
gywdnpxw10#
1.2.47还在
efzxgjgh11#
1.2.49还在
ykejflvf12#
1.2.51还在,
这里逻辑不合理
public class JSONSerializer extends SerializeFilterable {
...
public final void writeWithFormat(Object object, String format) {
if (object instanceof Date) {
DateFormat dateFormat = this.getDateFormat();
//如果设置了DateFormat,不会进入if
if (dateFormat == null) {
dateFormat = new SimpleDateFormat(format, locale);
dateFormat.setTimeZone(timeZone);
}
String text = dateFormat.format((Date) object);
out.writeString(text);
return;
}
.......
}
k3bvogb113#
1.2.58 仍然存在
d7v8vwbk14#
居然是2016年的问题,还会修复吗? @wenshao