Дооснащение 2, GSON и пользовательский анализ - PullRequest
0 голосов
/ 13 апреля 2020

Я использую Retrofit2, Gson для получения и анализа данных. На данный момент у меня есть ответ ниже, для которого создание классов POJO не работает -

[
  {
    "state": "Tripura",
    "districtData": [
      {
        "district": "Gomati",
        "confirmed": 1,
        "lastupdatedtime": "",
        "delta": {
          "confirmed": 0
        }
      },
      {
        "district": "North Tripura",
        "confirmed": 1,
        "lastupdatedtime": "",
        "delta": {
          "confirmed": 0
        }
      }
    ]
  },
  {
    "state": "Nagaland",
    "districtData": [
      {
        "district": "Dimapur",
        "confirmed": 1,
        "lastupdatedtime": "",
        "delta": {
          "confirmed": 0
        }
      }
    ]
  }
]

Я не могу получить правильные данные из этого ответа. Я уже читал о пользовательском разборе JSON для модификации (например, - https://medium.com/@andersonk / retrofit-2-custom-deserializer-for-unwrapping-properties-8cb8b2ec901e ), но он не работает для меня. Кроме того, вопросы, связанные с этим в StackOverflow, связаны с ответом Specifi c Json than generi c.

. Пожалуйста, предоставьте полезную ссылку / решение для того же

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Полагаю, что поскольку ответом является список, это и является причиной вашей ошибки.

Если вы объявите свой POJO примерно так Редактировать: DistrictDatum Также должен быть класс с полем из API.

1 голос
/ 13 апреля 2020

Пожалуйста, проверьте ваш класс POJO

 -----------------------------------com.example.Delta.java-----------------------------------

    package com.example;

    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;

    public class Delta {

    @SerializedName("confirmed")
    @Expose
    private Integer confirmed;

    public Integer getConfirmed() {
    return confirmed;
    }

    public void setConfirmed(Integer confirmed) {
    this.confirmed = confirmed;
    }

    }
    -----------------------------------com.example.DistrictDatum.java-----------------------------------

    package com.example;

    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;

    public class DistrictDatum {

    @SerializedName("district")
    @Expose
    private String district;
    @SerializedName("confirmed")
    @Expose
    private Integer confirmed;
    @SerializedName("lastupdatedtime")
    @Expose
    private String lastupdatedtime;
    @SerializedName("delta")
    @Expose
    private Delta delta;

    public String getDistrict() {
    return district;
    }

    public void setDistrict(String district) {
    this.district = district;
    }

    public Integer getConfirmed() {
    return confirmed;
    }

    public void setConfirmed(Integer confirmed) {
    this.confirmed = confirmed;
    }

    public String getLastupdatedtime() {
    return lastupdatedtime;
    }

    public void setLastupdatedtime(String lastupdatedtime) {
    this.lastupdatedtime = lastupdatedtime;
    }

    public Delta getDelta() {
    return delta;
    }

    public void setDelta(Delta delta) {
    this.delta = delta;
    }

    }
    -----------------------------------com.example.Example.java-----------------------------------

    package com.example;

    import java.util.List;
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;

    public class Example {

    @SerializedName("state")
    @Expose
    private String state;
    @SerializedName("districtData")
    @Expose
    private List<DistrictDatum> districtData = null;

    public String getState() {
    return state;
    }

    public void setState(String state) {
    this.state = state;
    }

    public List<DistrictDatum> getDistrictData() {
    return districtData;
    }

    public void setDistrictData(List<DistrictDatum> districtData) {
    this.districtData = districtData;
    }

    }
...