springboot返回json和xml


在項目中某些情況下接口需要返回的是xml數據或者json數據

1、在springboot項目加入依賴jackson-dataformat-xml

<dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.1.2.RELEASE</version>
</dependency>            

 

 2、在pojo層添加User類

package com.example.demo.pojo;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * 被@XMLRootElement注解的類User,被描述為一個頂層的XML element
 */
@XmlRootElement
public class User {

    String userName;
    String userAge;
    String userAddress;

    public User(String userName, String userAge, String userAddress) {
        this.userName = userName;
        this.userAge = userAge;
        this.userAddress = userAddress;
    }

    /**
     * 該注解可以將被注解的(非靜態)字段,或者被注解的get/set方法對應的字段映射為本地元素,也就是子元素。
     */
    @XmlElement
    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    @XmlElement
    public String getUserAge() {
        return userAge;
    }

    public void setUserAge(String userAge) {
        this.userAge = userAge;
    }

    @XmlElement
    public String getUserAddress() {
        return userAddress;
    }

    public void setUserAddress(String userAddress) {
        this.userAddress = userAddress;
    }
}

3、在controller層添加UserController.java

package com.example.demo.controller;

import com.example.demo.pojo.User;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    //http://localhost:8080/json
    @GetMapping(value = "/json",produces = MediaType.APPLICATION_JSON_VALUE)
    public User index(){
        User user = new User("echola", "22", "深圳");
        return user;
    }


    //http://localhost:8080/xml
    @GetMapping(value = "/xml",produces = MediaType.APPLICATION_XML_VALUE)
    public User XML(){
        User user = new User("echola", "22", "深圳");
        return user;
    }
}

啟動項目成功后,輸入http://localhost:8080/json,頁面上的json字符串:

  

 

輸入http://localhost:8080/xml,頁面上Xml格式:

  


 

注意:

  • @Controller和RestController的區別
  • @RestController注解相當於@ResponseBody+@Controller合在一起的作用。但是不能返回jsp,html頁面,視圖解析器InternalResourceViewSolver不起作用,無法解析jsp,html頁面,只能返回Return中的內容
  • 若返回到指定的頁面,需要@Controller配合視圖解析器才可以。如返回Json,Xml或自定義的ModiaType內容到頁面中,則需要在對應的方法上添加@ResponseBody
  • @RequestMapping和@GetMapping、@PostMapping(@PutMapping、@DeleteMapping)的區別
  • GetMapping用於處理Get類型的方法,@PostMapping用於處理Post類型的方法等
  • 傳統的@requestMapping注釋實現URI處理程序,拿么它應該是:
  @RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
  • 新方法可以簡化為:
   @GetMapping("/get/{id}")

   查看@GetMapping注釋的源代碼,我們可以看到它已經通過以下方式使用RequestMethod.Get進行了注釋:

@Target({ java.lang.annotation.ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(method = { RequestMethod.GET })
public @interface GetMapping {
   // abstract codes
}

 


免責聲明!

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



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