2016-12-14 44 views
0

我有一個基本的休息控制器返回模型列表中JSON到客戶端:爪哇 - 彈簧復位JSON對象/數組

@RestController 
public class DataControllerREST { 

    @Autowired 
    private DataService dataService; 

    @GetMapping("/data") 
    public List<Data> getData() { 
     return dataService.list(); 
    } 

} 

在這種格式返回數據:

[ 

    { 
     "id": 1, 
     "name": "data 1", 
     "description": "description 1", 
     "active": true, 
     "img": "path/to/img" 
    }, 
    // etc ... 

] 

那是偉大的開始,但我想過這個返回格式的數據:

[ 
    "success": true, 
    "count": 12, 
    "data": [ 
     { 
      "id": 1, 
      "name": "data 1", 
      "description": "description 1", 
      "active": true, 
      "img": "path/to/img" 
     }, 
     { 
      "id": 2, 
      "name": "data 2", 
      "description": "description 2", 
      "active": true, 
      "img": "path/to/img" 
     }, 
    ] 
    // etc ... 

] 

,但我不能確定回合這個問題,因爲我不能返回任何類作爲JSON ...任何人有建議或意見?

問候和感謝!

+0

當你的JSON以「[」開頭,這意味着它的數組。你實際上是指一個數組還是你的意思是一個有'data'數組的對象('{}')? – Adam

回答

4

「因爲我不能返回任何類作爲JSON」 - 說誰?

其實這正是你應該做的。在這種情況下,您將需要創建一個包含所有您想要的字段的外部類。這將是這個樣子:

public class DataResponse { 

    private Boolean success; 
    private Integer count; 
    private List<Data> data; 

    <relevant getters and setters> 
} 

而且你的服務代碼將變爲像這樣:

@GetMapping("/data") 
public DataResponse getData() { 
    List<Data> results = dataService.list(); 
    DataResponse response = new DataResponse(); 
    response.setSuccess(true); 
    response.setCount(results.size()); 
    response.setData(results); 
    return response; 
} 
+0

嘿,謝謝你的回答, 我正在抱怨的「轉換器」: 「org.springframework.web.util.NestedServletException:請求處理失敗;嵌套異常是java.lang.IllegalArgumentException:找不到轉換器的返回值鍵入:class com.example.app.rest.controller.DataResponse「 你有什麼建議嗎? –

+0

您是否爲DataResponse添加了相關的getter和setter?是[傑克遜包括作爲您的項目的一部分](http://stackoverflow.com/questions/32905917/how-to-return-json-data-from-spring-controller-using-responsebody)? – rmlan

+0

你是男人 忘了那些getter' ... –