使用Gson的Spring Data JPA页面和JSON

时间:2018-07-17 18:21:10

标签: java json spring spring-mvc spring-data-jpa

我使用带有依赖项的xml配置的spring mvc:

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.12</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-jaxrs</artifactId>
        <version>1.9.12</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.9.12</version>
    </dependency>

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.4</version>
    </dependency>

转换为JSON。但是对于Spring数据JPA Page,结果为空: {}。带有存储库:

@Repository("personRepository")
public interface PersonRepository extends CrudRepository<Person, Long> {

    Page<Person> findAll(Pageable pageable);

}

和控制器:

@RestController
public class ApiController {

    @Autowired
    PersonService personService;

    @GetMapping(value = {"/api/person/getpage"}, produces = {"application/json"})
    public Page<Person> getPerson() {
        return personService.findAll(new PageRequest(0, 10));
    }
}

任何人都可以告诉我如何将正确的数据恢复为以下格式:

{ "totalPages":501,
"totalElements":5001,
"size":10,
"content":[{"id":1,"firstName":"Joe","lastName":"Doe"}, 
           {"id":2,"firstName":"Mich","lastName":"Jogger"}, 
           {"id":3,"firstName":"Santa","lastName":"Close"}, ...],
"number":0,
"numberOfElements":10,
"sort":null,
"last":false,
"first":true}

1 个答案:

答案 0 :(得分:0)

您必须在控制器中将返回类型更改为List<Person>。我可以看到db中有5001条记录。样本控制器代码,

@GetMapping(value = {"/api/person/getpage"}, produces = {"application/json"})
public List<Person> getPerson() {
    Page<Person> pagePersonList = personService.findAll(new PageRequest(0, 10));
    List<Person> personList = pagePersonList.getContent();
    return personList;
}

让我知道是否有任何问题或疑问。