Spring MVC 返回 JSON

版权声明:尊重原创,转载请标明出处 https://blog.csdn.net/jifgjifg/article/details/52265616

环境:
eclipse:
eclipse-jee-neon-R-win32

spring:
spring-framework-4.3.1

jackson:
jackson-core-2.8.0.jar
jackson-databind-2.7.0.jar
jackson-annotations-2.8.0.jar


以前用Spring mvc 返回 json,一般用 jackson-mapper-asl.jar
但 spring 4.x 貌似已不支持

jackson 相关的库,已移到这个项目:https://github.com/FasterXML


下面介绍如何在 spring 4.x 中返回 json


1、
先下载三个jar,缺一不可:
jackson-core-2.8.0.jar:
https://github.com/FasterXML/jackson-core/wiki

jackson-databind-2.7.0.jar:
https://github.com/FasterXML/jackson-databind/wiki

jackson-annotations-2.8.0.jar:
https://github.com/FasterXML/jackson-annotations/wiki

三个 jar 拖到项目的 WebContent/WEB-INF/lib 中


2、
<mvc:annotation-driven /> 放到 spring 的配置文件,配置文件参考下面代码:

<?xml version= "1.0" encoding ="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
 http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
 http://www.springframework.org/schema/mvc
 http://www.springframework.org/schema/mvc/spring-mvc.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    <context:component-scan base-package="com.forum.www.controller" />
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/WEB-INF/views/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>
    <mvc:annotation-driven />
</beans>

3、
写要序列化成 json 的实体类,如下,必须有 get、 set 方法

User 类

public class User {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Phone> getPhones() {
        return phones;
    }

    public void setPhones(List<Phone> phones) {
        this.phones = phones;
    }

    private List<Phone> phones;
}

Phone 类

public class Phone {
    private int num;

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }
}

4、
在控制器的方法的返回值前加 @ResponseBody
控制器的方法如下:

    @RequestMapping(value = "/json")
    public @ResponseBody com.forum.www.viewmodel.User json(Model model) {
        com.forum.www.viewmodel.User user = new com.forum.www.viewmodel.User();
        user.setName("Michael Jackson");

        List<Phone> listPhone = new ArrayList<Phone>();

        Phone p1 = new Phone();
        p1.setNum(10000);
        Phone p2 = new Phone();
        p2.setNum(20000);
        Phone p3 = new Phone();
        p3.setNum(30000);

        listPhone.add(p1);
        listPhone.add(p2);
        listPhone.add(p3);

        user.setPhones(listPhone);

        return user;
    }

最后结果如下
这里写图片描述

猜你喜欢

转载自blog.csdn.net/jifgjifg/article/details/52265616