PagingAndSortingRepository - custom pageable response structure

前端 未结 2 563
刺人心
刺人心 2021-01-20 11:02

Is there a way to simplify the structure returned from this controller:

@GetMapping
public Iterable getAll(@PathParam("page") int page)          


        
2条回答
  •  一个人的身影
    2021-01-20 11:30

    • It looks like you have to create custom JsonSerializer with @JsonComponent annotation.

    • I will copy the code for reference but you can see it here. PageImpl JSON serialization

        @JsonComponent
        public class PageImplJacksonSerializer extends JsonSerializer> {
    
        @Override
        public void serialize(PageImpl page, 
                              JsonGenerator jsonGenerator, 
                              SerializerProvider serializerProvider) 
                              throws IOException {
    
            jsonGenerator.writeStartObject();
            jsonGenerator.writeObjectField("content", page.getContent());
            jsonGenerator.writeBooleanField("first", page.isFirst());
            jsonGenerator.writeBooleanField("last", page.isLast());
            jsonGenerator.writeNumberField("totalPages", page.getTotalPages());
            jsonGenerator.writeNumberField("totalElements", page.getTotalElements());
            jsonGenerator.writeNumberField("numberOfElements", 
                                           page.getNumberOfElements());
    
            jsonGenerator.writeNumberField("size", page.getSize());
            jsonGenerator.writeNumberField("number", page.getNumber());
            //sort omitted 
    
            jsonGenerator.writeEndObject();
          }
        }
    

提交回复
热议问题