Ich folgte der Startanleitung von auf der Frühlingswebsite https://spring.io/guides/gs/consuming-rest/.RestTemplate, das Null zurückgibt, wenn serialisiert zu POJO
Ich befolge das genaue Tutorial nicht in dem Sinne, dass ich einen anderen Endpunkt verwende: http://www.omdbapi.com?s=rush.
Ich habe ein Problem mit der JSON-Konvertierung zu POJO. Ich bekomme keine Fehler oder Ausnahmen. Könnte jemand darauf hinweisen, wo ich falsch liege?
Sie können den vollständigen Code here
Hier sind meine POJOs finden:
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 + "]";
}
}
Hier die Search.java ist
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 + "]";
}
}
Hier ist die Treiberklasse.
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());
}
}
Die Konsolenausgabe ist:
14:34:12.941 [main] INFO com.sample.restapi.ConsumerApplication - SearchResponse [search=null, totalResults=344, response=null]
Was genau gibt null? Ich vermute, du meinst, dass die Liste null ist. In diesem Fall mögliches Duplikat von http://stackoverflow.com/questions/19580856/jackson-list-serialization-nested-lists –
Redlab
@Redlab Ich habe gerade einen Schnitt gemacht, der die Konsolenausgabe angibt, die ich bekomme. Ich denke, du kannst nicht sagen, dass es doppelt ist, weil ich nicht verstehen kann, wie RestTemplate die konsumierte API verarbeitet und in mein POJO konvertiert. – Amriteya
Sie haben Recht, es ist kein Duplikat. siehe meine Antwort – Redlab