从 json 响应中隐藏页面的默认参数 | spring开机| Netflix尤里卡

hide default parameters of page from json response | spring boot | Netflix Eurekka

我有 JSON 来自 spring 的响应 boot as,

{
    "content": [],
    "pageable": {
        "sort": {
            "sorted": true,
            "unsorted": false,
            "empty": false
        },
        "offset": 0,
        "pageNumber": 0,
        "pageSize": 10,
        "unpaged": false,
        "paged": true
    },
    "totalPages": 0,
    "totalElements": 0,
    "last": true,
    "size": 10,
    "number": 0,
    "sort": {
        "sorted": true,
        "unsorted": false,
        "empty": false
    },
    "numberOfElements": 0,
    "first": true,
    "empty": true
}

但我需要如下回复,

{
  "content": [],
  "last": true,
  "totalPages": 0,
  "totalElements": 0,
  "size": 10,
  "number": 0,
  "sort": null,
  "first": true,
  "numberOfElements": 0
}

简而言之,如何修改返回响应的默认参数?我可以为此设置任何额外的配置吗?提前致谢

我猜你正在使用 spring 数据页,所以只需创建一个 JsonSerializer 的实现 例如

@JsonComponent
public class PageImplJacksonSerializer extends JsonSerializer<PageImpl> {

   @Override
   public void serialize(PageImpl page, JsonGenerator jsonGenerator, SerializerProvider serializers) throws IOException {
    
    jsonGenerator.writeStartObject();
    jsonGenerator.writeObjectField("content", page.getContent());
    jsonGenerator.writeBooleanField("first", page.isFirst());
    jsonGenerator.writeBooleanField("last", page.isLast());
    jsonGenerator.writeNumberField("page_number", page.getNumber());
    jsonGenerator.writeNumberField("elements_per_page", page.getNumberOfElements());
    jsonGenerator.writeNumberField("total_pages", page.getTotalPages());
    jsonGenerator.writeNumberField("total_elements", page.getTotalElements());
    jsonGenerator.writeEndObject();
  }
}