Всем привет) Помогите разобраться. Есть такой JSON файл:
{
"cod":"200",
"message":0.0021,
"cnt":40,
"list":[
{
"dt":1547812800,
"main":{
"temp":-5.72,
"temp_min":-6.64,
"temp_max":-5.72,
"pressure":1005.73,
"sea_level":1008.41,
"grnd_level":1005.73,
"humidity":91,
"temp_kf":0.91
},
"weather":[
{
"id":600,
"main":"Snow",
"description":"небольшой снегопад",
"icon":"13d"
}
],
"clouds":{
"all":76
},
"wind":{
"speed":4.27,
"deg":281.504
},
"snow":{
"3h":0.163
},
"sys":{
"pod":"d"
},
"dt_txt":"2019-01-18 12:00:00"
},
{
"dt":1547823600,
"main":{
"temp":-7.03,
"temp_min":-7.72,
"temp_max":-7.03,
"pressure":1006.97,
"sea_level":1009.62,
"grnd_level":1006.97,
"humidity":80,
"temp_kf":0.69
},
"weather":[
{
"id":600,
"main":"Snow",
"description":"небольшой снегопад",
"icon":"13n"
}
],
"clouds":{
"all":68
},
"wind":{
"speed":3.57,
"deg":282.502
},
"snow":{
"3h":0.039
},
"sys":{
"pod":"n"
},
"dt_txt":"2019-01-18 15:00:00"
}
],
"city":{
"id":536203,
"name":"Sankt-Peterburg",
"coord":{
"lat":59.9167,
"lon":30.25
},
"country":"RU"
}
}
Чтобы вытащить оттуда массив list, сначала полученный с сайта JSON файл превращаю в строку
String weatherData = "";
while (in.hasNext()) {
weatherData += in.nextLine();
}
return weatherData;
Затем достаю этим методом массив list
JSONObject weatherDataJson = new JSONObject(weatherDataCollect(message));
// create array of dts
JSONArray list1 = weatherDataJson.getJSONArray("list");
FiveDaysWeather fiveDaysWeatherObj = null;
Gson fiveDaysWeatherGson = new Gson();
// get object from found dt
JSONObject todaysWeather = list1.getJSONObject(0);
fiveDaysWeatherObj = fiveDaysWeatherGson.fromJson(todaysWeather.toString(), FiveDaysWeather.class);
return fiveDaysWeatherObj.weatherShow(message, "сегодня");
Есть ли возможность вытащить массив list без использования JSON? Только средствами GSON?
Заходите на сайт http://www.jsonschema2pojo.org/
Вставляете свой json. Выставляете настройки: Target language: java, Source type: JSON, Annotation style: None. Нажимаете Preview - вам сгенерируют все необходимые классы.
Описание json:
class Coord {
float lat;
float lon;
}
class City {
int id;
String name;
Coord coord;
}
class Main {
float temp;
float tempMin;
float tempMax;
float pressure;
float seaLevel;
float grndLevel;
int humidity;
float tempKf;
}
class Weather {
int id;
String main;
String description;
String icon;
}
class Clouds {
int all;
}
class Wind {
float speed;
float deg;
}
class Snow {
float _3h;
}
class Sys {
String pod;
}
class MyList {
int dt;
Main main;
List<Weather> weather;
Clouds clouds;
Wind wind;
Snow snow;
Sys sys;
String dtTxt;
}
class MainExample{
int cod;
String message;
int cnt;
List<MyList> list; <-- ваш список
City city;
}
Пример работы:
//json
String jsonOutput= "...";
//описание типа
Type listType = new TypeToken<MainExample>(){}.getType();
//преобразование json в объект
MainExample mainExample = new Gson().fromJson(jsonOutput, listType);
for (MyList item: mainExample.list){
if (item.dt==1547812800){
item.main.temp
item.main.humidity
item.wind.speed
item.weather[0].description
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
В уведомлении присутствуют 3 кнопкиПо нажатию каждой из них должна открываться активность и выполняться определенное действие
При открытии сайта некоторые данные хранятся в SessionStorage в JSONКак их оттуда можно вытащить?
Будет ли приложение, написанное на JDK 11, работать у пользователя, у которого установлен JRE 8? Если нет, то как сделать так? (кроме как устанавливать...