这里我们主要说明Bean类型转成Json,list集合转成json和Map转成json.
首先看bean类型如何转成Json:
这里我们用Jquery操作ajax。
<input type="button" value="Emp转JSON"/><p>
<input type="button" value="List<Emp>转JSON"/><p>
<input type="button" value="Map<String,Object>转JSON"/><p>
$(":button:first").click(function(){
var url = "${pageContext.request.contextPath}/emp/beanToJson.action";
$.ajax({
type: "POST",
url: url,
success: function(data){
var date = new Date(data.hireDate);
alert(date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日")
},
})
});
</script>
导入jar包、spring.xml中配置适配器(这步不可省略):
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
">
<!-- 配置Action -->
<context:component-scan base-package="com.my.springmvc.json.ann"></context:component-scan>
<!-- 注册适配器 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class = "org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
</list>
</property>
</bean>
<!--
1)导入jackson-core-asl-1.9.11.jar和jackson-mapper-asl-1.9.11.jar
2)在业务方法的返回值和权限之间使用@ResponseBody注解表示返回值对象需要转成JSON文本
3)在spring.xml配置文件中编写如下代码:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
</list>
</property>
</bean>
-->
</beans>
看一下业务类:
@Controller
@RequestMapping(value="/emp")
public class EmpAction {
/*
* @ResponseBody Emp表示让springmvc将emp转成json文本
*
*/
@RequestMapping(value = "beanToJson")
public @ResponseBody Emp beanToJson() {
Emp emp = new Emp();
emp.setId(1);
emp.setUsername("航安");
emp.setSalary(800D);
emp.setHireDate(new Date());
return emp;
}
}
在修饰符合返回值之间加上@ResponseBody 注解。
这样当ajax异步请求成功后就可以得到json类型的Emp对象。
list集合转Json:
<!-- List<Emp>转JSON -->
<script type="text/javascript">
$(":button:eq(1)").click(function(){
var url = "${pageContext.request.contextPath}/emp/listBeanToJson.action";
var sendData = null;
$.ajax({
type: "POST",
url: url,
success: function(data){
console.log(data);
alert(data);
},
});
});
Action层代码:
@RequestMapping(value = "listBeanToJson")
public @ResponseBody List<Emp> listBeanToJson() {
List<Emp> empList = new ArrayList<Emp>();
Emp emp1 = new Emp(1, "张三1", 1000D, new Date());
Emp emp2 = new Emp(2, "张三2", 2000D, new Date());
Emp emp3 = new Emp(3, "张三3", 3000D, new Date());
empList.add(emp1);
empList.add(emp2);
empList.add(emp3);
return empList;
}
map集合转成json:
<!-- Map<String,Object>转JSON -->
<script type="text/javascript">
$(":button:last").click(function(){
var url = "${pageContext.request.contextPath}/emp/mapBeanToJson.action";
var sendData = null;
$.ajax({
type: "POST",
url: url,
success: function(data){
console.log(data);
},
});
});
</script>
action层代码:
@RequestMapping(value = "mapBeanToJson")
public @ResponseBody Map<String, Object> mapBeanToJson() {
Map<String, Object> empMap = new HashMap<>();
Emp emp1 = new Emp(1, "张三1", 1000D, new Date());
Emp emp2 = new Emp(2, "张三2", 2000D, new Date());
Emp emp3 = new Emp(3, "张三3", 3000D, new Date());
empMap.put("1", emp1);
empMap.put("2", emp2);
empMap.put("3", emp3);
return empMap;
}