Анализировать данные с сервера с помощью Gson с JSONObject в данных

У меня есть данные, которые я получаю с сервера.

{
  "_id": "5a78263eab294307bebc2e6b",
  "userID": "PvIMsjink1UcrwXZ4gb899W5Kxo2",
  "name": "battery",
  "price": 22,
  "description": "t",
  "__v": 0,
  "boardVisibility": "MainBoard",
  "date": "2018-02-05T09:39:10.597Z",
  "picture": {
    "url": "https://firebasestorage.googleapis.com/v0/b/bitbuy-bitbuy.appspot.com/o/user%2FPvIMsjink1UcrwXZ4gb899W5Kxo2%2FDepositphotos_59984669_s-2015.jpg?alt=media&token=a562fd6d-98ff-4fb8-ad93-c251a5016b0d",
    "name": "Depositphotos_32026397_m-2015.jpg"
  }
}

Вот класс модели:

   @SerializedName("_id")
    private String _id;
    @SerializedName("userID")
    private String userID;
    @SerializedName("name")
    private String name;
    @SerializedName("price")
    private double price;
    @SerializedName("description")
    private String description;
    @SerializedName("date")
    private String date;
    @SerializedName("picture")
    private JSONObject picture;

Вот как я установил данные для ArrayList:

userItemsArr = Gson().fromJson<List<UserItem>>(gsonObj.getJSONArray("docs").toString(), turnsType) as ArrayList<UserItem>

Проблема в том, что значение picture в ответе содержит другой JSONObject, поэтому в моем классе модели я получаю пустой JSONObject.

используйте jsonschema2pojo.org для создания класса pojo

AskNilesh 02.05.2018 12:44

Gson ничего не знает о org.json.JSONObject, не стесняйтесь писать собственный TypeAdapter<> ... или просто используйте Map<String, String>, если вы не хотите создавать другой класс POJO для изображения

Selvin 02.05.2018 12:45
0
2
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
"picture": {
    "url": "https://firebasestorage.googleapis.com/v0/b/bitbuy-bitbuy.appspot.com/o/user%2FPvIMsjink1UcrwXZ4gb899W5Kxo2%2FDepositphotos_59984669_s-2015.jpg?alt=media&token=a562fd6d-98ff-4fb8-ad93-c251a5016b0d",
    "name": "Depositphotos_32026397_m-2015.jpg"
  }

Вы должны Исправить свой класс MODEL.

@SerializedName("picture")
@Expose
private Picture picture;

// Метод Set-Get

public Picture getPicture() {
return picture;
}

public void setPicture(Picture picture) {
this.picture = picture;
}

А также

public class Picture {

@SerializedName("url")
@Expose
private String url;
@SerializedName("name")
@Expose
private String name;

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}

public String getName() {
return name;
}

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

}

Вы можете использовать jsonschema2pojo.

Другие вопросы по теме