SpringMVC使用jackson转json格式

如果没有使用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);
    }
}
时间: 2024-10-12 10:25:26

SpringMVC使用jackson转json格式的相关文章

SpringMVC 目标方法返回 json 格式数据

第一种方法:使用  @ResponseBody 注解来实现 1.Spring MVC 配置 <mvc:annotation-driven></mvc:annotation-driven>.添加该配置的作用如下,而我们用到的是... 2.添加 jackson-annotations-2.1.5.jar.jackson-core-2.1.5.jar.jackson-databind-2.1.5.jar 三个注解. 3.在 handler 目标方法中返回集合类型数据并添加 @Respon

Java使用jackson操作Json格式数据

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,她是 JavaScript原生态的数据格式. 她独立于任何编程语言.可读性高.易于生成和解析.体积轻量,这些优雅的特性,让JSON成为非常理想的数据交换的语言. 原文地址: http://www.hpboys.com/616.html 在使用Java操作JSON时,我们用到了Jackson框架. Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Ja

SpringMvc中JackSon对Json的处理

1.首先引入三个jar包 maven的引入方式 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.7.4</version> </dependency> <dependency> <groupId>com.fasterxml

SpringMVC返回JSON格式

采用RESTful方式开发API的时候,需要返回JSON格式的数据. 但是怎么样才最方便呢? 1.   SpringMVC集合com.fastxml.jackson.core下面的三个包 jackson-core,jackson-databind ,jackson-annotions       配置在POM.xml文件中, 2.   在@controll类里面使用@ResponseBody注解函数 3.   在Spring配置文件中添加<mvc:annotion-driven />,这个配置

springMVC传递JSON格式数据

这两天在使用SpringMVC传递JSON数据格式,出现了各种令人头大的问题,但是功夫不负有心人,最后还是解决了问题.在这里记录下来供大家参考,如有不对,还请各位大侠指正. 在SpringMVC传递JSON数据格式需要加入两个jar包:com.springsource.org.codehaus.jackson-1.4.2.jar,com.springsource.org.codehaus.jackson.mapper-1.4.2.jar. 实体JavaBean:Person  具有tname,g

SpringMVC 设置全局DateTime json返回格式

对于部分返回DateTime的项目,只需要在指定属性上添加@JsonSerialize 使用自定义的json转换格式即可自定义返回DateTime格式 但是对于项目中返回有多个DateTime字段来说,上面的方法明显不适用,这时需要自定义全局的DateTime转换器: 1.配置文件: <!-- 采用SpringMVC自带的JSON转换工具,支持@ResponseBody注解 --> <bean class=" org.springframework.web.servlet.mv

Springmvc返回JSON格式到页面中文乱码问题

我是通过@ResponseBody注解的方式实现json格式传到页面的方法.首先查看源代码如下图,springmvc的默认编码是“ISO-8859-1”; 而我们通常编码都是使用UTF-8, 所以我们需要在springmvc的注解配置中处理json格式的时候应该修改一下默认的编码格式. springmvc配置文件中代码如下: <mvc:annotation-driven> <mvc:message-converters register-defaults="true"

SpringMVC 统一返回JSON格式数据到前端

有时在给APP做接口功能的时候,都是返回JSON格式的数据,所以最好的只好在工程设置一个统一的数据返回方式 在SpringMVC 直接配置XML可以产生这种配置,比较简单 Spring的版本我用的是4.3.3的 <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter&qu

JAVA对象通过jackson转成json格式,属性名首字母变成小写的解决方法

java代码对象如下: package com.evideostb.billsystem.module.model; import org.codehaus.jackson.map.annotate.JsonSerialize; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; /**  * 响应协议头  * @author zhang