spingmvc学习总结——8——返回json类型数据

这里我们主要说明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;
    }

猜你喜欢

转载自blog.csdn.net/qq_39411208/article/details/81867139