springmvc轉換JSON數據


1、引入jackson包

要想在springmvc框架下支持json的轉換,需要引入jackson的包,在pom.xml中添加如下代碼:

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.7</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.7</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.7</version>
        </dependency>

沒有用maven的可以去官網下載jar包

 

修改springMVC-servlet.xml文件,修改mvc:annotation-driven標簽對應的內容,其實引用了jackson的包,默認就加了對json的轉換了,我試了一下,不添加也可以用。

    <mvc:annotation-driven>
        <mvc:message-converters>
            <ref bean="stringHttpMessageConverter"/>
            <ref bean="mappingJackson2HttpMessageConverter"/>
        </mvc:message-converters>
    </mvc:annotation-driven>

    <bean id="stringHttpMessageConverter"
          class="org.springframework.http.converter.StringHttpMessageConverter"/>

    <bean id="mappingJackson2HttpMessageConverter"
          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>

 

2、pojo類的轉換

添加一個pojo類 User.java

public class User {
    
    private String username;
    private String fav;
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getFav() {
        return fav;
    }
    public void setFav(String fav) {
        this.fav = fav;
    }

}

 

Controller類中將User對象轉換成json字符串輸出:

    @RequestMapping("/test1")
    @ResponseBody public  User test1() {
        User user = new User();
        user.setUsername("張三");
        user.setFav("乒乓球");
        return user;
    }

也可以這么寫:

    @RequestMapping("/test1")
    public @ResponseBody User test1(HttpServletRequest request) {
        User user = new User();
        user.setUsername("張三");
        user.setFav("乒乓球");
        return user;
    }

輸出的結果是:

{"username":"張三","fav":"乒乓球"}

 

3、Map的轉換

如果沒有pojo類,只是一些鍵值對的輸出,可以使用Map

    @RequestMapping("/test2")
    @ResponseBody
    public Map<String,String> test2() {
        Map<String,String> map = new HashMap<String,String>();
        map.put("username", "張三");
        map.put("fav", "乒乓球");
        return map;
    }

輸出的結果跟上面的一樣:

{"username":"張三","fav":"乒乓球"}

 

4、接收json串做為參數

    @RequestMapping(value="/test3",consumes="application/json",method=RequestMethod.POST)
    public String test3(@RequestBody User user,HttpServletRequest request) {
        request.setAttribute("username", user.getUsername());
        request.setAttribute("fav", user.getFav());
        return "/test3";
    }

這里是使用@RequestBody User user作為接收參數,如果要接收json,接收方式只能是post方式,不然會報錯

這里我是返回到了一個jsp頁面,這里就不把jsp頁面的內容寫出來了

這里列一下上一個請求頁面的html:

<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
<script type="text/javascript">
$.ajax({
      url: "test3",
      cache: false,
      contentType:"application/json",
      data:JSON.stringify({username:'張三',fav:'乒乓球'}),
      dataType:"json",
      type: "POST",
      success: function(html){
        alert(html);
      }
    });
</script>

 

5、另外一種選擇Gson

Gson的使用更加簡單,也是目前流行的json處理包,可以把jackson替掉,引入gson

pom.xml

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

springMVC-servlet.xml文件

    <mvc:annotation-driven>
        <mvc:message-converters>
            <ref bean="stringHttpMessageConverter"/>
            <ref bean="mappingGsonHttpMessageConverter" />
        </mvc:message-converters>
    </mvc:annotation-driven>

    <bean id="stringHttpMessageConverter"
          class="org.springframework.http.converter.StringHttpMessageConverter"/>
    
        <bean id="mappingGsonHttpMessageConverter"
          class="org.springframework.http.converter.json.GsonHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM