Java - Spring返回JSON对象/数组

Cre*_*ter 0 java rest spring json controller

我有一个基本的Rest Controller,它将json中的模型列表返回给客户端:

@RestController
public class DataControllerREST {

    @Autowired
    private DataService dataService;

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

}
Run Code Online (Sandbox Code Playgroud)

以这种格式返回数据:

[

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

]
Run Code Online (Sandbox Code Playgroud)

这非常适合开始,但我想要返回这种格式的数据:

[
    "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 ...

]
Run Code Online (Sandbox Code Playgroud)

但我不确定这个问题,因为我不能将任何课程作为JSON返回......任何人都有建议或建议?

问候和感谢!

rml*_*lan 7

"因为我无法将任何课程归还为JSON" - 谁说?

事实上,这正是你应该做的.在这种情况下,您将需要创建一个包含所需字段的外部类.它看起来像这样:

public class DataResponse {

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

    <relevant getters and setters>
}
Run Code Online (Sandbox Code Playgroud)

您的服务代码将更改为以下内容:

@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;
}
Run Code Online (Sandbox Code Playgroud)