#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;