将Json映射到json数组中的对象

时间:2018-03-06 09:43:43

标签: json spring rest spring-boot client

我刚开始新项目。

我的后端客户端从外部API获取json,将其包装到右侧模型,然后前端可以获取此转换后的数据。

我的问题是我接受了这种json格式:

 {
"page": 1,
"total_results": 52,
"total_pages": 3,
"results": [
    {
     {Movie1 data}
     {Movie2 data}
     {Movie3 data}
     ...
     }
  ]
 }

我想只获取电影数据,所以我创建了电影模型,但它无法反序列化。

这是我的代码:

    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
    String resourceURL = url;
    HttpEntity<String> entity = new HttpEntity<String>(headers);
    ResponseEntity<Movie[]> response = restTemplate.exchange(resourceURL,  HttpMethod.GET, entity, Movie[].class);
    if (response.getStatusCode() == HttpStatus.OK) {
        for (Movie movie : response.getBody()) {
            System.out.println(movie.originalTitle);
        }
    }
    else
    {
        System.out.println("Error");
    }

如何从结果数组中获取数据? Greetnigs Bartek

1 个答案:

答案 0 :(得分:1)

你需要创建一个匹配你的json的pojo。目前,您正在尝试将您的json与Movie []匹配,这是不正确的 试试这个

@JsonIgnoreProperties(ignoreUnknown = true)
class MovieResult {
    List<Movie> results;
    //Getters and Setters
}

@JsonIgnoreProperties(ignoreUnknown = true)
class Movie {
//Getters and Setters   
}



 ResponseEntity<MovieResult> response = restTemplate.exchange(resourceURL,  HttpMethod.GET, entity, MovieResult.class);
 MovieResult movieResult = response.getBody();
 List<Movie> movies = movieresult.getResults();