簡體   English   中英

@ResponseBody,ResponseEntity Spring將Object作為JSON返回

[英]@ResponseBody , ResponseEntity Spring return Object as JSON

我正在使用Spring版本4(spring數據),我想將Object作為JSON返回,我想知道即使沒有使用xmlRootElement注釋用戶類,下面的代碼也能正常工作:

@RequestMapping(value = "/resources/users", method = RequestMethod.GET)
public ResponseEntity<User> getUserByLogonId(OAuth2Authentication auth) {

    String userLogonId = ((org.springframework.security.core.userdetails.User) auth.getUserAuthentication()
            .getPrincipal()).getUsername();
    UsersServices usersServices = new UsersServicesImpl(usersOperations);
    User user = usersServices.findByLogonId(userLogonId);
    HttpStatus userStatus = HttpStatus.NOT_FOUND;
    if (user != null) {
        userStatus = HttpStatus.FOUND;
    }
    return new ResponseEntity<User>(user, userStatus);
}

任何機構都能解釋一下 是ResponseBody / ResponseEntity自己做的工作? 當我需要注釋要作為JSON返回的對象類。

@RestController本身添加了@ResponseBody注釋。 你可以在Github問題中看到它

您還可以查看官方的春季教程 在這里,您可以查看以下行和示例:

除了add案例之外,這些控制器方法返回簡單的POJO - Collection<Bookmark>Bookmark等。 當一個HTTP請求進來指定一個Accept headerSpring MVC循環通過配置的HttpMessageConverter直到它找到一個可以從POJO域模型類型轉換為Accept header指定的內容類型,如果這樣配置的話。

您還可以按照官方文檔中的以下行和示例進行操作

@RestController是一個結合@ResponseBody和@Controller的構造型注釋。 更重要的是,它為您的Controller提供了更多的意義,並且可能在框架的未來版本中帶來額外的語義。

和,

與@RequestBody和@ResponseBody一樣,Spring使用HttpMessageConverter來轉換請求和響應流。

xmlRootElement用於將對象表示為XML文檔中的XML元素。 XML與JSON無關。
當你通過@RestController注釋你的類時,它為每個方法組合了@Controller for class和@ResponseBody 然后HttpMessageConverter從請求和響應流轉換。
@ResponseEntity用於與自定義參數(標題,http代碼等)形成http響應。 例如:

return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED);

Spring引導使用jackson json庫對json對象進行編組和解組java對象,無需任何顯式配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM