使用readEntity()解析具有不同标签名称的Json响应

时间:2018-06-29 12:55:36

标签: java json serialization jackson jersey-client

使用杰克逊从泽西岛使用readEntity()将json字符串解析为对象通常可以正常工作,但是现在我使用的API返回的是我不知道如何处理的奇怪json结构。

我的模型类Restaurant.java

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Restaurant {

    @JsonProperty("real_name")
    private String name;

    @JsonProperty("phone")
    private String phone;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

还有我要返回饭店列表的Client方法。

  public List<Restaurant> getRestaurantsByZIP(String zip) {
        Response response = lunchgateClient.getRestaurants(zip, null, null, null);
        return response.readEntity(new GenericType<List<Restaurant>>() {
        });
    }

我从API获取的json

{
  "restaurants": {
    "key_0": {
      "id": "1172",
      "real_name": "Restaurant 1",
      "phone": "123456789",
      "email": "someEmail@email.com"
    },
    "key_1": {
      "id": "1173",
      "real_name": "Restaurant 2",
      "phone": "123456789",
      "email": "someEmail@email.com"
    }
  },
  "tags": "asian, eurpoean, cafe"
}

如您所见,这些jsons由不同的Restaurants组成,但它们不是列表中的beeing实体,而是一个名称分别为key_0,key_1等的单独对象。如何设计我的模型,使readEntity()方法可用于此json,而模型中没有“ key_0”等作为属性?

0 个答案:

没有答案