是否可以更改Spring Boot 2可分页响应的JSON名称/结构?

时间:2019-03-15 19:21:18

标签: java spring-boot spring-data

我使用的是Spring Boot 2,我喜欢它的开箱即用功能,但是现在我被要求将分页结果重新格式化为其他结构。我想继续在控制器中使用Pageable和Page功能。我正在寻找执行此操作的正确方法。

从控制器

@GetMapping(name = "customers", produces = MediaType.APPLICATION_JSON_VALUE)
    Page<Customer> showCustomers(Pageable pageable) {
        Page<Customer> page = customerRepo.findCustomers(pageable);
        return page;
    }

使用的仓库

public interface CustomerRepository extends JpaRepository<Customer, Long>  {

}

这是默认格式:

{
    "content": [

    ],
    "pageable": {
        "sort": {
            "sorted": false,
            "unsorted": true
        },
        "offset": 0,
        "pageSize": 20,
        "pageNumber": 0,
        "unpaged": false,
        "paged": true
    },
    "last": false,
    "totalPages": 62835,
    "totalElements": 1256684,
    "size": 20,
    "number": 0,
    "numberOfElements": 20,
    "sort": {
        "sorted": false,
        "unsorted": true
    },
    "first": true
}

这是我想要的格式

{
    "@id": "/users?page=2&page_size=4",
    "@type": "Collection",
    "@links": {
        "first": {
            "href": "/users?page=1&page_size=4"
        },
        "next": {
            "href": "/users?page=3&page_size=4"
        },
        "previous": {
            "href": "/users?page=1&page_size=4"
        },
        "last": {
            "href": "/users?page=5&page_size=4"
        }
    },
    "items": [

        Content...
    ],
    "total_items": 20
}

0 个答案:

没有答案