Прежде всего, я хочу сказать, что я интенсивно искал, как это сделать, используя рекомендации (по крайней мере) следующих ссылок:
Анализ массива JSON, который содержит объекты с различнымиатрибуты с Retrofit https://medium.com/@dds861/json-parsing-using-retrofit-and-recycleview-2300d9fdcf15 http://instinctcoder.com/android-studio-parsing-json-using-retrofit/
Как проанализировать несколько массивов JSON внутри объекта JSON с помощью Gson?
ИспользованиеМодификация для доступа к массивам JSON
Как проанализировать список объектов JSON, окруженных [], используя Retrofit и GSON?
Однако все приведенные выше ссылки показываютКак проанализировать объекты / массивы JSON с объектами одного типа или объектами только в одном массиве.
Вот конкретные данные JSON, с которыми я работаю:
{
"coord":{
"lon":-83.92,
"lat":34.08
},
"weather":[
{
"id":500,
"main":"Rain",
"description":"light rain",
"icon":"10d"
}
],
"base":"stations",
"main":{
"temp":292.16,
"pressure":1011,
"humidity":64,
"temp_min":290.15,
"temp_max":294.15
},
"visibility":16093,
"wind":{
"speed":3.6,
"deg":290,
"gust":7.7
},
"clouds":{
"all":90
},
"dt":1524609300,
"sys":{
"type":1,
"id":809,
"message":0.0057,
"country":"US",
"sunrise":1524567171,
"sunset":1524615295
},
"id":420007383,
"name":"Athens",
"cod":200
}
Я преобразовалвсе это pojo, используя jsonschema2pojo.org.У меня вопрос, как я могу использовать модификацию для доступа к переменной типа «main» внутри объекта Weather, если у меня уже есть «main» объект в массиве JSON?В этом отношении, как я могу получить доступ к любому из внутренних объектов, используя Retrofit?
Я сделал переменные все сериализуемыми, и экспериментировал, используя статические классы для объектов в массиве.
КакНапример, скажем, я хочу получить "id" в объекте "weather".Мой класс JSONResponse выглядит следующим образом:
public class JSONResponse {
@SerializedName("weather")
@Expose
private List<Weather> weather = null;
@SerializedName("main")
@Expose
private Main main;
@SerializedName("wind")
@Expose
private Wind wind;
@SerializedName("clouds")
@Expose
private Clouds clouds;
@SerializedName("sys")
@Expose
private Sys sys;
@SerializedName("name")
@Expose
private String name;
//getter and setter methods
}
А мой класс Weather выглядит следующим образом: открытый класс Weather {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("main")
@Expose
//This describes what the weather is like, e.g. clear or cloudy
private String main;
@SerializedName("description")
@Expose
private String description;
@SerializedName("icon")
@Expose
private String icon;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMain() {
return main;
}
public void setMain(String main) {
this.main = main;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
}
Как мне получить эти данные, используя Retrofit в моей основной деятельности?Буду ли я лучше использовать RXJava без модернизации?Если так, как я могу сделать это?Заранее спасибо всем, у кого есть терпение ответить на этот вопрос.