http://gaoqifang.blog.51cto.com/2270113/757978
出现问题:
http://blog.csdn.net/wangxiaotaolhc/article/details/6701720
说明:spring mvc对json数据的处理,分为请求中json数据的处理和返回json数据的处理。
如何实现:
1、需要额外的jar包支持,我在网上找到一个总的jar包:jackson-all-1.9.2.jar;
2、spring 配置文件添加视图处理配置:
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="defaultViews">
<!-- 输出为JSON数据-->
<!--此处com.company.json.MappingJacksonJsonView覆写了org.springframework.web.servlet.view.json.MappingJacksonJsonView类,也可不必覆写直接使用此类-->
<list>
<bean class="com.company.json.MappingJacksonJsonView" />
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>
3.接收请求中的json数据:
1)使用ajax方式发送带有json数据的请求代码:
$.ajax(type: 'POST',
url:"xxxxx" ,
data: JSON.stringify({userName:'winzip',password:'password',mobileNO:'13818881888'}),
dataType: 'json',
contentType:'application/json;charset=UTF-8',
success: function(result) {
alert(result.success);
} );
其中data中传递的便是一个User(User类需要自己创建)对象的json形式;
2)后台控制器中处理json数据的实现方法:
/**
* 输入为JSON格式的数据的方式
* 1、@RequestBody 将httpRequest的body绑定到方法参数上
* @param param
* @return
*/
@RequestMapping(value = "xxxxx")
public ModelAndView someMethod(@RequestBody User user){
do something………;
return some;
}
代码解释:当一个json请求传过来一个json数据形式的User对象时,会自动将json数据转换成User对象。
3.接收请求中的json数据:
1)请求:同样使用ajax方式发送json请求
$.ajax({
"url" : "xxxxxxx",
"type" : "GET",
"dateType" : "json",
"success" : function(data) {
此处便可对返回的json按照自己需要进行处理了
如果返回的是一个单独对象,可直接使用data.对象属性,来获得该对象的相应属性值,如果返回的是一个集合对象,可使用for循环data[i].对象属性,来获得对象相应的属性值。
}
});
2)后台控制器中处理代码的实现方法:
/**
* 输出为JSON格式的数据的方式
* @ResponseBody的作用是把返回值直接写到HTTP response body里
*/
@RequestMapping("xxxxxxx")
@ResponseBody
public Object someMethod() {
…………………………..
return someObject;
}
代码解释:当一个type为json请求调用此方法,那么,他自动将返回的对象转换成json数据返回。
附件是所需要的jar