gpt4 book ai didi

java - RestTemplate 在序列化为 POJO 时返回 null

转载 作者:行者123 更新时间:2023-11-29 04:35:04 33 4
gpt4 key购买 nike

我正在遵循 at spring 网站的启动指南 https://spring.io/guides/gs/consuming-rest/ .

在我使用另一个端点的意义上,我没有遵循确切的教程:http://www.omdbapi.com?s=rush .

我在将 JSON 转换为 POJO 时遇到问题。我没有收到任何错误或异常。有人可以指出我哪里出错了吗?

你可以找到完整的代码here

这是我的 POJO:

package com.sample.restapi.model;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown=true)
public class SearchResponse {

private List<Search> search;

private String totalResults;

private String response;

public SearchResponse() {

}

public List<Search> getSearch() {
return search;
}

public void setSearch(List<Search> search) {
this.search = search;
}

public String getTotalResults() {
return totalResults;
}

public void setTotalResults(String totalResults) {
this.totalResults = totalResults;
}

public String getResponse() {
return response;
}

public void setResponse(String response) {
this.response = response;
}

@Override
public String toString() {
return "SearchResponse [search=" + search + ", totalResults=" + totalResults + ", response=" + response + "]";
}

}

这是Search.java

package com.sample.restapi.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown=true)
public class Search {

private String title;

private String year;

private String imdbID;

private String type;

private String poster;

public Search() {

}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getYear() {
return year;
}

public void setYear(String year) {
this.year = year;
}

public String getImdbID() {
return imdbID;
}

public void setImdbID(String imdbID) {
this.imdbID = imdbID;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public String getPoster() {
return poster;
}

public void setPoster(String poster) {
this.poster = poster;
}

@Override
public String toString() {
return "Search [title=" + title + ", year=" + year + ", imdbID=" + imdbID + ", type=" + type + ", poster="
+ poster + "]";
}
}

这是驱动类。

package com.sample.restapi;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.client.RestTemplate;

import com.sample.restapi.model.SearchResponse;

@SpringBootApplication
public class ConsumerApplication {

private static final Logger log = LoggerFactory.getLogger(ConsumerApplication.class);

public static void main(String[] args) {

RestTemplate restTemplate = new RestTemplate();
SearchResponse searchResponse = restTemplate.getForObject("http://www.omdbapi.com?s=rush", SearchResponse.class);

log.info(searchResponse.toString());
}
}

控制台输出是:

14:34:12.941 [main] INFO com.sample.restapi.ConsumerApplication - SearchResponse [search=null, totalResults=344, response=null]

最佳答案

您缺少 json 中属性的正确标识符,大写和小写字母的响应和您的类存在差异。在您的类(class)中使用@JsonProperty。

@JsonProperty("Search")
private List<Search> search = new ArrayList<Search>();

private String totalResults;
@JsonProperty("Response")
private String response;

您还应该在 Search 类中添加 @JsonProperty 注释。

关于java - RestTemplate 在序列化为 POJO 时返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953866/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com