Firebase Android: для изменения getter в модели GSON

#android #json #firebase #gson #firebase-realtime-database

#Android #json #firebase #gson #firebase-база данных в реальном времени

Вопрос:

У меня есть json:

    {
      "station": {
        "decription": "",
        "geo": {
          "lat": "55.8",
          "lng": "25.2"
        },
        "htlist": [
          "05:31",
          "06:16",
          "06:56",
          "07:36",
          "08:16",
          "10:16"
        ],
        "name": "Station name",
        "number": "7",
        "sid": "9998",
        "wtlist": [
          "05:31",
          "06:16",
          "06:56",
          "07:36",
          "23:16"
        ]
      }
    }
  

И модель:

 public class Station {

    @SerializedName("decription")
    @Expose
    private String decription;
    @SerializedName("geo")
    @Expose
    private Geo geo;
    @SerializedName("htlist")
    @Expose
    private List<String> htlist = new ArrayList<String>();
    @SerializedName("name")
    @Expose
    private String name;
    @SerializedName("number")
    @Expose
    private String number;
    @SerializedName("sid")
    @Expose
    private String sid;
    @SerializedName("wtlist")
    @Expose
    private List<String> wtlist = new ArrayList<String>();

    public String getDecription() {
        return decription;
    }

    public void setDecription(String decription) {
        this.decription = decription;
    }


    public Geo getGeo() {
        return geo;
    }

    public void setGeo(Geo geo) {
        this.geo = geo;
    }

    public List<String> getHtlist() {
        return htlist;
    }

    public void setHtlist(List<String> htlist) {
        this.htlist = htlist;
    }

    public String getName() {
        return name;
    }

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

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getSid() {
        return sid;
    }

    public void setSid(String sid) {
        this.sid = sid;
    }

    public List<String> getWtlist() {
        return wtlist;
    }

    public void setWtlist(List<String> wtlist) {
        this.wtlist = wtlist;
    }

}
  

Что я нашел?

Когда я попытался изменить:

 public List<String> getWtlist() {
    return wtlist;
}
  

для getWeekendTimeList() GSON не использует это поле. Размер списка всегда равен 0.

Вопрос:

По каким причинам это происходит? Это GSON или Firebase ошибка? (У меня не было этой проблемы с GSON раньше) Как изменить метод getter, чтобы избежать поломок в коде?

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

1. Вы уже используете getWeekendTimeList() это возвращает htlist в своем коде. Этот точный код работает так, как ожидалось. Что я должен сделать, чтобы воспроизвести проблему?

2. @MohanadMohie виноват, я отредактировал свою модель. Я использую Firebase, возможно, проблема именно в этом

3. Я не понимаю, почему Firebase повлияет на ваш анализатор Gson, если строка JSON одинакова. Когда я попробовал это со статической строкой JSON, она работала нормально даже после изменения имени метода. Лучший обходной путь, который я могу предложить, — это добавить другой метод с именем, getWeekendTimeList который возвращает getWtlist .