У меня есть класс модели, в котором, когда тип цены «фиксированный», он возвращает объект, а когда он «процент», он возвращает строку, я не знаю, как это сделать? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть модель, которая получает ответ, в котором, когда у меня есть значения option и furthur, в значениях у меня есть priceType, который может быть процентным или фиксированным. Когда тип цены указан в процентах, ответ Sting, но когда тип цены фиксирован, объект идентификатора ответа и я получаю сообщение об ошибке.

Принять ответ

JSONObject jsonResponse = new JSONObject(response);

Gson gson = new GsonBuilder().create();
product = gson.fromJson(String.valueOf(jsonResponse), Product.class);

JSON REsponse for Percentage

{
                    "id": 73,
                    "option_id": 21,
                    "price": "7.0000",
                    "price_type": "percent",
                    "position": 0,
                    "created_at": "2019-10-22 04:23:16",
                    "updated_at": "2019-10-30 04:57:45",
                    "label": "Red",
                    "translations": [
                        {
                            "id": 73,
                            "option_value_id": 73,
                            "locale": "en",
                            "label": "Red"
                        }
                    ]
                }

Json Response для Фиксированной цены

{
                    "id": 74,
                    "option_id": 21,
                    "price": {
                        "amount": "5.0000",
                        "formatted": "$5.00",
                        "currency": "USD"
                    },
                    "price_type": "fixed",
                    "position": 1,
                    "created_at": "2019-10-22 04:23:16",
                    "updated_at": "2019-10-22 04:23:16",
                    "label": "White",
                    "translations": [
                        {
                            "id": 74,
                            "option_value_id": 74,
                            "locale": "en",
                            "label": "White"
                        }
                    ]
                }

Цена может быть либо классом, либо строкой, но я не знаю, как поместить в свой класс модель ..

1 Ответ

0 голосов
/ 30 октября 2019

Вы можете объявить свой класс pojo, как показано ниже: -

public class Product<T> {
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getOption_id() {
        return option_id;
    }

    public void setOption_id(int option_id) {
        this.option_id = option_id;
    }


    private int id;
   private int option_id;

    public T getPrice() {
        return price;
    }

    public void setPrice(T price) {
        this.price = price;
    }

    T price;

.............
}

Когда ответ проанализирован, вы можете проверить тип T, а затем извлечь данные следующим образом.

Надеюсь, это решит вашу проблему. Дайте мне знать, если потребуется дополнительный код.

...