Модернизация Android всегда возвращает значение false для типа boolean при извлечении jsonobject

#android #json #boolean #retrofit #jsonobject

#Android #boolean #модернизация #json

Вопрос:

Я новичок в использовании retrofit, и здесь я столкнулся с проблемой, когда retrofit всегда возвращает false для объекта логического типа, который на самом деле равен 1 (true), который я переназначаю.

ниже приведен мой класс pojo для восстановления данных

 public class JobsModel implements Serializable {

@SerializedName("posted_on")
private String postedOn;
@SerializedName("is_active")
private boolean isActive=false;

public JobsModel(String postedOn, boolean isActive) {
    this.postedOn=postedOn;
    this.isActive=isActive;
}

public Boolean getPostedOn() {
    return postedOn
}

public void setPostedOn(String postedOn) {
    postedOn= postedOn
}

public Boolean getActive() {
    return isActive;
}

public void setActive(Boolean active) {
    isActive = active;
}
  

}

любая помощь была бы высоко оценена

Комментарии:

1. Скорее всего, ваш @SerializedName(«is_active») неверен. Пожалуйста, проверьте эту строку.

Ответ №1:

прежде всего измените private boolean isActive=false; на private boolean Active;

Во-вторых, измените

    public void setActive(Boolean active) {
        isActive = active;   }
  

Для

 public void setActive(boolean active) {
    Active = active;

}
  

и если ваш JSON содержит какой-либо объект, начинающийся с I, измените его, потому что он всегда будет возвращать false.
Надеюсь, это будет вам полезно.

Ответ №2:

Сначала вы должны быть уверены, что @SerializedName("is_active") это правильно и соответствует вашему имени json.

Также вам не нужно вводить значение, подобное:

 private boolean isActive=false;
  

Я изменил ваши методы получения и установки. Можете ли вы попробовать с этим:

 public boolean getActive() {
    return isActive;
}

public void setActive(boolean active) {
    isActive = active;
}
  

Если вы используете Retrofit 2.0, возникает странное поведение (я думаю, это ошибка) при синтаксическом анализе boolean .

Когда мы пытаемся проанализировать boolean объект json, имя которого начинается с "I" , он всегда возвращает false. Это не имеет отношения к вам, но, возможно, есть проблема, подобная этой. Если вы можете, вы можете попробовать использовать другое имя json для вашего объекта.

Комментарии:

1. итак, что мы можем попробовать для значения boolean

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

Ответ №3:

Boolean — это примитивный тип в Java, значение по умолчанию которого равно false, если ваше значение json is_active не имеет никакого значения, то значение is_active по умолчанию равно false! Чтобы избежать этой проблемы, используйте Boolean, а не boolean тип!

Ответ №4:

Вы уже инициализировали это как false. Сделайте это

 private boolean isActive;