Spring MVC处理JSON数据(3)-自定义消息转换器

Spring MVC处理JSON数据(3)-自定义消息转换器

Spring MVC默认使用Jackson处理JSON数据。在实际开发中,若需要使用其他的工具处理JSON,那么就可以使用自定义的Http消息转换器(HttpMessageConverter)。

使用fastjson处理JSON示例:

1.User实体类

public class User implements Serializable {
	private static final long serialVersionUID = -1684248767747396092L;
	
	private String username;//用户名
	private String pwd;//密码
	
	//get、set略
}

2.请求的js

$("#_btn_send3").click(function(){
	$.ajax({
		url : "${pageContext.request.contextPath}/json/receiveJson3.do",
		type : "post",
		data: {username:"小明",pwd:"123456"},
		dataType : "json",
		success : function(data){
			console.log(data);
		}
	});
});

3.Controller

该方法和前两篇文章一致,仍是通过@ResponseBody标识将Java类转换为特定格式的数据写入到输出流中。区别的地方是在Spring要调用我们自定义的消息转换器。

@RequestMapping("/receiveJson3")
public @ResponseBody Map<String, Object> receiveJson3(User user) throws Exception {
	Map<String, Object> dataMap = new HashMap<String,Object>();
	dataMap.put("status", "success");
		
	if(user != null){
		System.out.println("用户名:" + user.getUsername() + " 密码:" + user.getPwd());
	}else {
		System.out.println("未获取到用户");
	}
		
	dataMap.put("user", user);
	return dataMap;
}

4.配置springmvc.xml

重点在springmvc配置这里,此时不注册默认的消息转换器,并在此定义自己的消息转换器以及fastjson转换器。在使用fastjson时,需要引入fastjson.jar,具体配置如下:

<!-- 设置配置方案 -->
<mvc:annotation-driven>
	<!-- 不使用默认的消息转换器 -->
	<mvc:message-converters register-defaults="false">
		<!-- 配置Spring的转换器 -->
      	 	<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
	    	<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"/>
    		<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
	    	<bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>
    		<!-- 配置fastjson中实现HttpMessageConverter接口的转换器 -->
	    	<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
    			<!-- 加入支持的媒体类型,返回contentType -->
    			<property name="supportedMediaTypes">
    				<list>
    					<value>text/html;charset=UTF-8</value>
	    				<value>application/json;charset=UTF-8</value>
    				</list>
    			</property>
	    	</bean>
	</mvc:message-converters>
</mvc:annotation-driven>

5.测试结果

(1).正常结果


(2).为测试是否是配置的fastjson起作用,注释掉<bean id="fastJsonHttpMessageConverter" ...>该bean后测试结果

6.注

(1).通过<mvc:message-converters>关闭默认的消息转换器,之后自定义所需使用的JSON转换器。在引入相关jar后,使用实现了HttpMessageConverter接口的类创建bean,同时配置响应的MIME;

(2).406状态码:HTTP协议状态码的一种,Not Acceptable,客户端错误,一般指客户端浏览器不接受请求的MIME类型

(3).fastjson相关jar下载地址,GitHub:点击打开链接,CSDN:点击打开链接

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值