Задать вопрос

Как спрасить api.open-meteo с помощбю Gson?

Надо в приложении показывать погоду на главном экране. Решил спарсить 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&current=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()
}
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы