我使用webclient是为了从我的spring Boot 应用程序调用一个外部api。我能够得到一个响应,但当我将其转换为dto时,所有值都为null。这是dto:
public class AddressResponse {
private String street;
private String line1;
private String line2;
private String postcode;
private String country;
}
这是进行调用的服务中的方法:
public AddressResponse resolveAddress(AddressRequest addressRequest) {
return webClient.get()
.uri(uriBuilder -> uriBuilder
.queryParam("text", addressRequest.getSearchTerm())
.queryParam("apiKey", apiKey)
.build())
.retrieve()
.bodyToMono(AddressResponse.class)
.block();
}
这是当我使用postman并手动对外部API进行get调用时的响应:
"results": [
{
"datasource": {
"sourcename": "openstreetmap",
"attribution": "© OpenStreetMap contributors",
"license": "Open Database License",
"url": "https://www.openstreetmap.org/copyright"
},
"name": "Bermondsey",
"country": "United Kingdom",
"country_code": "gb",
"state": "England",
"county": "Greater London",
"city": "London"
我做错了什么?
谢谢
2条答案
按热度按时间kkih6yb81#
响应没有正确Map,因为
AddressResponse
中的字段实际上嵌套在另一个JSON对象中。您可以创建一个包含
"results"
列表的附加类。当然,当你调用API时,你需要将给定的类从
AddressResponse.class
更改为AddressRootResponse.class
。6ie5vjzr2#
我可以给予你代码,但我认为你可以了解JSON结构。并使用在线工具“Json to POJO”了解更多信息