3 回答
TA贡献1895条经验 获得超3个赞
试试下面的代码。您不能直接访问国家/地区,它是放置在嵌套对象中的值。而且由于响应主体作为数据返回,因此您无法将其转换为用户对象。首先,您需要将其转换为数据对象。
public class User {
private int id;
private String name;
private String urlPicture;
private Address address;
// getters and setters
}
public class Address {
private String country;
// getters and setters
}
public void testResponse(){
RestTemplate restTemplate = new RestTemplate();
Data data = new Data();
User user = new User();
Gson gson = new Gson();
String response = restTemplate.getForObject(
"https://apifrommyrequest.com/user/{id}",
String.class,
73442);
data = gson.fromJson(response, Data.class);
System.out.println(data);
}
TA贡献1828条经验 获得超4个赞
如果你愿意,你也可以像这样设计你的 POJO(以减少嵌套的 POJO):
public class Data {
private User data;
//getters and setters
}
public class User {
private int id;
private String name;
private String urlPicture;
private String country;
@JsonProperty("address")
private void unpackNested(Map<String,String> elements)
{
this.country = elements.get("country");
}
//getters and setters
}
然后最后在 Data 类上反序列化
TA贡献1856条经验 获得超17个赞
你真的不需要做从字符串到对象的转换,resttemplate 已经使用 jackson 为你做了,只需要
YourObject response = restTemplate.getForObject(
"https://apifrommyrequest.com/user/{id}",
YourObject.class,
73442);
然后它将映射到你的 pojo 对象,在这种情况下你真的不需要 gson。
添加回答
举报