我有一个端点,它将结果作为分页输出提供,如下所示。
代码段:
public Page<MyObject> getData(Pageable pageable) {
return repository.findAll(pageable);
}
响应:
{
"content": [
{
"id": 2,
"name": "",
"regionName": "",
"category1": "",
"category2": "",
"modifiedDateTime": "",
"abstract": ""
}
],
"pageable": {
"sort": {
"sorted": false,
"unsorted": true
},
"offset": 0,
"pageSize": 1,
"pageNumber": 0,
"paged": true,
"unpaged": false
},
"last": false,
"totalPages": 10,
"totalElements": 5808,
"size": 1,
"number": 0,
"numberOfElements": 1,
"first": true,
"sort": {
"sorted": false,
"unsorted": true
}
}
我们可以重命名属性名称&#34;内容&#34;使用其他名称,如&#34;数据&#34;?
我们还可以删除输出中的其他分页参数吗? 例如:sort,offset
答案 0 :(得分:1)
您无法修改PageImpl类并添加@JsonProperty
来重命名,但您可以为其创建装饰器。此外,如果您需要隐藏可分页(或任何其他属性),那么您就不要将它们暴露给装饰者。
class PageDecorator<T> {
private final Page<T> page;
public PageDecorator(Page<T> page) {
this.page = page;
}
@JsonProperty("data") // override property name in json
public List<T> getContent() {
return this.page.getContent();
}
public int getTotalPages() {
return page.getTotalPages();
}
public long getTotalElements() {
return page.getTotalElements();
}
...
}
您的代码应如下所示:
public PageDecorator<MyObject> getData(Pageable pageable) {
return new PageDecorator<>(repository.findAll(pageable));
}