我有一些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"
。
我该怎么办?
答案 0 :(得分:2)
通常您不能。因为Page
有content
,并且与业务无关。对于Page
,它包含的内容是中性的。
但我认为以下解决方法可以提供帮助。
您需要创建一个自定义页面类。
public class CustomPageImpl<T> extends PageImpl<T>{
@JsonProperty("contacts")
public List<T> getContent() {
return super.getContent();
}
}
然后使用此自定义页面类返回结果。