Проблема двойных и булевых атрибутов в модели JSON - PullRequest
0 голосов
/ 09 ноября 2018

Заранее благодарю всех, кто видит мою публикацию. У меня есть этот JSON, который я получаю в ответ, когда объект в списке получает в одном из своих атрибутов тип данных Double, и тот же самый также получает данные Boleean в другом объекте того же списка, я использую библиотеку модернизации, но выдает мне следующую ошибку:

Ожидается двойное значение, но BOOLEAN в строке 1 столбца 1831 путь $ .extension_attributes.carrousel [0] .related_products [0] .price_regular

Это говорит о том, что проблема в атрибуте "price_regular", это первый раз, когда что-то подобное происходит со мной.

Это JSON

"related_products": [
                {
                    "name": "AZALEIA 239-036",
                    "price_regular": false,
                    "price_special": null,
                    "price": 0,                    
                },
                {            
                    "name": "AZALEIA 239-038",
                    "price_regular": 69.9,
                    "price_special": null,
                    "price": 69.9,                        
                },
]

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

@SerializedName(Constants.Api.RelatedProducts.NAME)
private String name;
@SerializedName(Constants.Api.RelatedProducts.PRICE_REGULAR)
private Double priceRegular;
@SerializedName(Constants.Api.RelatedProducts.PRICE_SPECIAL)
private Double priceSpecial;
@SerializedName(Constants.Api.RelatedProducts.PRICE)
private Double price;

 public String getName() {
    return name;
}

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

public Double getPriceRegular() {
    return priceRegular;
}

public void setPriceRegular(Double priceRegular) {
    this.priceRegular = priceRegular;
}

public Double getPriceSpecial() {
    return priceSpecial;
}

public void setPriceSpecial(Double priceSpecial) {
    this.priceSpecial = priceSpecial;
}

public Double getPrice() {
    return price;
}

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

1 Ответ

0 голосов
/ 09 ноября 2018

Прежде всего, введите ваш prim priceRegular как Объект в вашем классе модели как;

@SerializedName(Constants.Api.RelatedProducts.PRICE_REGULAR)
private Object priceRegular;

И, конечно, измените свой получатель как объект типа;

public Object getPriceRegular() {
    return priceRegular;
}

Теперь мы закончили с вашим классом моделей. Время для разбора ваших данных:)

В вашем ответе json вам нужно разобрать его как

if(response. getPriceRegular() instanceof Boolean) {
//Do something
} else if (response. getPriceRegular() instanceof Double) {
//Do something
} else {
//Do something
}

Я думаю, это будет работа для вашей истории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...