码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC使用jackson转json格式

时间:2015-09-10 17:27:22      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:

如果没有使用json转换器,在ajax请求的返回方法声明@ResponseBody时,会出现以下错误

"NetworkError: 406 Not Acceptable - http://uc.com:8081/login/check"

/login/check请求映射的方法如下

@RequestMapping("/login/check")
@ResponseBody
public Map<String, String> loginCheck(HttpServletRequest req) {
    Map<String, String> rs = new HashMap<String, String>();
    rs.put("result", "success");
    rs.put("message", "登录成功");
    return rs;
}

因为@ResponseBody声明,需要jackson包来处理,解决方法如下

一、引入jackson包

在pom.xml中声明以导入jackson包

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>

二、配置spring.xml

在Spring配置文件中加上一下内容

<!-- 注册json转换器,并自定义日期格式转换-->
<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
            <property name="objectMapper">
                <bean class="org.mastiff.tools.ToolJacksonDateFormat"></bean>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

如果不需要额外配置(这里是日期格式处理),这里其实只需要一行

<mvc:annotation-driven/>

org.mastiff.ToolJacksonDateFormat类用于日期格式转换,将所有日期转换成yyyy-MM-dd HH:mm:ss格式,源码

package com.ywlaker.tools;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializerProvider;
import org.codehaus.jackson.map.ser.CustomSerializerFactory;
/**
 * @功能描述:jackson转json时格式化日期显示,全局设置
 * @author yang.wei
 * @time 2015年8月18日 下午2:43:14
 * @version 0.0.1
 */
public class ToolJacksonDateFormat extends ObjectMapper {
    public ToolJacksonDateFormat() {
        CustomSerializerFactory factory = new CustomSerializerFactory();  
        factory.addGenericMapping(Date.class, new JsonSerializer<Date>(){
            @Override
            public void serialize(Date date, JsonGenerator jsonGenerator,
                    SerializerProvider arg2) throws IOException,
                    JsonProcessingException {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
                jsonGenerator.writeString(sdf.format(date));
            }});  
        this.setSerializerFactory(factory); 
    }
}

SpringMVC使用jackson转json格式

标签:

原文地址:http://www.cnblogs.com/ywlaker/p/4798455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!