springmvc json转java Date的JsonSyntaxException最简解决方案

来源:互联网 发布:为什么app连不上网络 编辑:程序博客网 时间:2024/06/03 06:35

问题描述

因为公司用的Linux服务器,在把spring+springmvc+hibernate项目部署上去之后,测试出现了问题:

json转时间格式异常

咋看异常,觉得问题不大,是不是把时间格式修正为:yyyy-MM-dd HH:mm:ss格式就不会异常了,结果不如人意。

解决方案

spring4.2版本指定的是GsonHttpMessageConverter,所以从异常来看是gson的异常,我们今天说的解决方案来自Jackson,所以:

1. spring.xml配置

<!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射 --><mvc:annotation-driven /><!-- 配置spring的message转换器  避免IE执行AJAX时,返回JSON让下载 --><bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">        <property name="supportedMediaTypes">            <list>                <value>text/html; charset=UTF-8</value>                <value>text/plain; charset=UTF-8</value>                <value>application/json;charset=UTF-8</value>            </list>        </property>    </bean><!-- 指定springmessage转换器为Jackson --><bean        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">    <property name="messageConverters">        <list>            <!-- json转换器 -->            <ref bean="mappingJacksonHttpMessageConverter" />        </list>    </property></bean>

习惯用注解的朋友这句应该是有了的:

<!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射 --><mvc:annotation-driven />

那么就加上对Jackson转换器的指定,就是这句话下面的两个bean配置。

2、Entity某个时间类型字段的配置

    @Temporal(TemporalType.TIMESTAMP)    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")      @Column(name = "trading_endtime", length = 19)    public Date getTradingEndtime() {        return this.tradingEndtime;    }

我在原来基础添加了一个注解:

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") 

这个注解来源Jackson:

com.fasterxml.jackson.annotation.JsonFormat
@JacksonAnnotation
@Target(value={ANNOTATION_TYPE, FIELD, METHOD, PARAMETER, TYPE})
@Retention(value=RUNTIME)


至此,异常比较优雅的解决。

阅读全文
0 0