Надо в приложении показывать погоду на главном экране. Решил спарсить api.open-meteo, но возникают проблемы. В парсинге Json-ов у меня маловато опыта и поэтому даже с таким простым Json-ом не могу справиться). Можете навести в правильную калию? Заранее спасибо за ответы!
Как выглядит сам Json-обьект:
{
"latitude":52.52,
"longitude":13.419998,
"generationtime_ms":0.09202957153320312,
"utc_offset_seconds":0, "timezone":"GMT",
"timezone_abbreviation":"GMT", "elevation":38.0,
"current_units":{ "time":"iso8601", "interval":"seconds", "temperature_2m":"°C", "relative_humidity_2m":"%", "apparent_temperature":"°C", "precipitation":"mm", "rain":"mm", "surface_pressure":"hPa" },
"current":{ "time":"2024-08-22T07:30", "interval":900, "temperature_2m":16.3, "relative_humidity_2m":63, "apparent_temperature":14.9, "precipitation":0.00, "rain":0.00, "surface_pressure":1010.6 },
"daily_units":{ "time":"iso8601", "temperature_2m_max":"°C", "temperature_2m_min":"°C" },
"daily":{ "time":["2024-08-22", "2024-08-23", "2024-08-24", "2024-08-25", "2024-08-26", "2024-08-27", "2024-08-28"],
"temperature_2m_max":[23.5, 29.7, 31.5, 23.8, 24.5, 26.3, 29.5],
"temperature_2m_min":[14.1, 16.2, 19.2, 17.2, 14.8, 14.2, 17.8]
}
Сторонние подключаемые библиотеки:
implementation ("io.reactivex.rxjava3:rxandroid:3.0.2")
implementation ("io.reactivex.rxjava3:rxjava:3.1.9")
implementation("com.google.code.gson:gson:2.11.0")
Код MainActivity в onCreate:
Observable.just("https://api.open-meteo.com/v1/forecast?latitude=55&longitude=55¤t=temperature_2m,relative_humidity_2m,apparent_temperature,precipitation,rain,surface_pressure&daily=temperature_2m_max,temperature_2m_min")
.map { Gson().fromJson(it, Weather::class.java) }
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
for (item in it.items) Log.d("Attempt", item.temperature2m.toString())
}, {
Log.e("Attempt", it.message.toString())
})
Log.d("Attempt", "$latitude, $longitude")
Моделька WeatherItem:
data class WeatherItem(
val temperature2m: Double,
val temperature2mMax: Double,
val temperature2mMin: Double,
val apparentTemperature: Double,
val relativeHumidity2m: Int,
val precipitation: Double,
val rain: Double,
val surfacePressure: Double,
)
Моделька Weather:
class Weather {
var items: ArrayList<WeatherItem> = arrayListOf()
}