Использование readEntity () для анализа ответа Json с разными именами тегов

Разбор строки json объекту с использованием readEntity () из jersey с использованием jackson обычно работает нормально, но теперь я использую 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;
    }
}

И мой метод клиента, где я хочу вернуть список ресторанов.

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

Json Я получаю от API

{
  "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 состоит из разных Ресторанов, но вместо сущностей ресторана, входящих в список, все они представляют собой отдельный объект с именем key_0, key_1 и т. Д. Как я могу создать свою модель, чтобы метод readEntity () работал для этого json без наличия «key_0» и т. Д. В моей модели в качестве атрибута?

java,json,serialization,jackson,jersey-client,

1

Ответов: 0

Использование readEntity () для анализа ответа Json с разными именами тегов

Разбор строки json объекту с использованием readEntity () из jersey с использованием jackson обычно работает нормально, но теперь я использую 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;
    }
}

И мой метод клиента, где я хочу вернуть список ресторанов.

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

Json Я получаю от API

{
  "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 состоит из разных Ресторанов, но вместо сущностей ресторана, входящих в список, все они представляют собой отдельный объект с именем key_0, key_1 и т. Д. Как я могу создать свою модель, чтобы метод readEntity () работал для этого json без наличия «key_0» и т. Д. В моей модели в качестве атрибута?

01Java, JSON, сериализация, джексон, джерси-клиент,
Похожие вопросы
Яндекс.Метрика