从JSON响应获取属性

时间:2018-07-10 05:54:50

标签: java json response resttemplate

我收到了我想从中获取数据的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"
                }
            },

2 个答案:

答案 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