Здесь у меня небольшие проблемы с получением значения элемента из строки JSON с использованием Gson.
Прежде всего, первая часть моего кода - получить объект из массива:
String jsonOutput= weatherDataCollect(message);
Gson gson = new Gson();
JsonElement element = gson.fromJson(jsonOutput, JsonElement.class);
JsonObject jsonObject = element.getAsJsonObject();
System.out.println(jsonObject.toString());
JsonArray list = jsonObject.getAsJsonArray("list");
Так что теперь, если я напишу:
JsonElement todaysWeather = list.get(0);
Я получу именно то, что мне нужно - эту часть json
{"dt":1549281600,"main":{"temp":-0.38,"temp_min":-1.3,"temp_max":-0.38,"pressure":1024.85,"sea_level":1027.5,"grnd_level":1024.85,"humidity":94,"temp_kf":0.91},"weather":[{"id":600,"main":"Snow","description":"небольшой снегопад","icon":"13d"}],"clouds":{"all":92},"wind":{"speed":2.11,"deg":271.5},"snow":{"3h":0.5445},"sys":{"pod":"d"},"dt_txt":"2019-02-04 12:00:00"}
В JSON масса таких частей, как эта.От всех мне нужно получить значение, подобное этому 1549281600
и сравнить с моим, чтобы выяснить, какое из них ближе.
Первая часть кода должна выглядеть следующим образом
long tomorrowTime = getTomorrowUnixTime();
long timeDifference = Integer.MAX_VALUE;
int minDtIndex = 0;
for (int i = 0; i < list.size(); i++){
JsonElement weatherItem = list.get(i);
Integer dt = Integer.valueOf(weatherItem.getAsString("dt").toString());
}
Но эточасть Integer dt = Integer.valueOf(weatherItem.getAsString("dt").toString())
не работает.Он должен получать значения от каждого dt
и сравнивать с tomorrowTime
Вторая часть будет выглядеть так:
long diff = Math.abs(tomorrowTime - dt);
if(diff < timeDifference){
timeDifference = diff;
minDtIndex = i;