为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

富国沪深 2022-12-15 11:19:03
我有一些 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". 我怎样才能做到这一点?
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

通常你不能。因为Page它content与业务无关。因为Page它所包含的是中性的。

但我认为以下解决方法可以提供帮助。

您需要创建自定义页面类。


public class CustomPageImpl<T> extends PageImpl<T>{

@JsonProperty("contacts")

public List<T> getContent() {

  return super.getContent();

}

}

然后使用这个自定义页面类返回结果。


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号