我收到了我想从中获取数据的API的响应。我如何通过RestTemplate将此响应映射到对象,却又不获取所有字段?我不想创建嵌套对象。我希望得到这样的结果:
@JsonProperty("id")
private long id;
@JsonProperty("user.userName") <-- how to achive this?
private String userName;
@JsonProperty("imagies.thumbnail.url") <-- how can i get only this 1 property?
private URL standardResolutionUrlOfPhoto;
响应:
"data": [
{
"id": "xxxxx",
"user": {
"username": "xxxxx" <--- I dont want to create User user field!
},
"images": {
"thumbnail": {
"width": 150,
"height": 150,
"url": "xxxxxx"
},
"low_resolution": {
"width": 320,
"height": 320,
"url": "xxxxx"
},
"standard_resolution": {
"width": 640,
"height": 640,
"url": "xxxx"
}
},
答案 0 :(得分:0)
有一个很酷但肮脏的方法可以实现这一目标。在这里看看:
@JsonProperty("id")
private long id;
@JsonIgnore
private String userName;
@JsonIgnore
private String standardResolutionUrlOfPhoto;
@JsonProperty("user")
private void unpackUser(JsonNode user) {
this.userName = user.get("username").asText();
}
@JsonProperty("images")
private void unpackImages(JsonNode images) {
this.standardResolutionUrlOfPhoto = images.get("thumbnail").get("url").asText();
}
答案 1 :(得分:0)
您可以使用JsonPath库通过JSON路径读取值。
类似的问题已经在其他问题中得到回答 Jsonpath with Jackson or Gson