猿问

如何更改 ResponseEntity 中的 JSON 响应格式?

我有一些 REST 控制器生成对用户的响应并发送它。


  @RequestMapping(method = RequestMethod.GET, value = "/hello/contacts")

    public ResponseEntity<Page<ContactDto>> getContacts(@RequestParam(name = "nameFilter") String nameFilter

    , @RequestParam(name = "page", required = false, defaultValue = "1") int page

    , @RequestParam(name = "size", required = false, defaultValue = "100") int size) {


        List<ContactDto> contacts = contactService.getContacts(nameFilter);


        Pageable pagiable = PageRequest.of(page - 1, size);

        int start = (page - 1) * size;

        int end = start + size;


        Page<ContactDto> pages;

        if (end <= contacts.size()) {

            pages = new PageImpl<>(contacts.subList(start, end), pagiable, contacts.size());

            return new ResponseEntity<>(pages, HttpStatus.OK);

        } else {

            if (start < contacts.size()) {

                contacts.size();

                pages = new PageImpl<>(contacts.subList(start, contacts.size()), pagiable, contacts.size());

                return new ResponseEntity<>(pages, HttpStatus.OK);

            }

        }


        return new ResponseEntity<>(HttpStatus.NO_CONTENT);

    }

发送响应后,用户将获得下一种格式的 JSON 响应:


{

    "content": [

        {

            "id": 1,

            "name": "Rm7W8bDq7z"

        },

        {

            "id": 2,

            "name": "vYYWLImOWe"

        },

        {

            "id": 3,

            "name": "gRKokZFEdf"

        }],``

    "pageable": {

        "sort": {

            "sorted": false,

            "unsorted": true,

            "empty": true

        },

        "offset": 0,

        "pageNumber": 0,

        "pageSize": 100,

        "paged": true,

        "unpaged": false

    },

    "totalPages": 10,

    "totalElements": 999,

    "last": false,

    "size": 100,

    "number": 0,

    "sort": {

        "sorted": false,

        "unsorted": true,

        "empty": true

    },

    "numberOfElements": 100,

    "first": true,

    "empty": false

}

我想将 JSON 属性名称更改content为另一个名称,例如"contacts". 我怎样才能做到这一点?


富国沪深
浏览 132回答 1
1回答

扬帆大鱼

通常你不能。因为Page它content与业务无关。因为Page它所包含的是中性的。但我认为以下解决方法可以提供帮助。您需要创建自定义页面类。public class CustomPageImpl<T> extends PageImpl<T>{@JsonProperty("contacts")public List<T> getContent() {&nbsp; return super.getContent();}}然后使用这个自定义页面类返回结果。
随时随地看视频慕课网APP

相关分类

Java
我要回答