Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Spring返回JSON对象/数组_Java_Json_Spring_Rest_Controller - Fatal编程技术网

Java-Spring返回JSON对象/数组

Java-Spring返回JSON对象/数组,java,json,spring,rest,controller,Java,Json,Spring,Rest,Controller,我有一个基本的Rest控制器,它将json格式的模型列表返回给客户端: @RestController public class DataControllerREST { @Autowired private DataService dataService; @GetMapping("/data") public List<Data> getData() { return dataService.list(); } }

我有一个基本的Rest控制器,它将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返回。。。有人有什么建议吗

问候和感谢

“因为我不能将任何类作为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;
}
公共类数据响应{
私人布尔成功;
私有整数计数;
私人名单数据;
}
您的服务代码将更改为以下内容:

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;
}
@GetMapping(“/data”)
公共数据响应getData(){
List results=dataService.List();
DataResponse=新的DataResponse();
response.setSuccess(true);
response.setCount(results.size());
响应。设置数据(结果);
返回响应;
}

当您的JSON以“[”开头时,这意味着它是一个数组。您实际上是指一个数组,还是指一个对象(
{}
),其中包含一个
数据的数组?嘿,感谢您的回答,我注意到“转换器”在抱怨:“org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为java.lang.IllegalArgumentException:未找到类型为class.com.example.app.rest.controller.DataResponse的返回值的转换器”您有什么建议吗?是否为DataResponse添加了相关的getter和setter?是否?