Пытаюсь обернуть голову вокруг дооснащения.Я новичок в этом, поэтому меня это смущает, хотя я смотрел видео и читал об этом здесь на SO
Я добавил несколько тестовых данных JSON
, которые выглядят так:
[
{"name":"John","age":30,"vehicle":"bicycle"},
{"name":"Bob","age":32,"vehicle":"walking"}
]
Он был проверен и найден по этому адресу: https://api.myjson.com/bins/lnjb8
Добавлен доступ в Интернет в manifest
и gradle
реализации.
My interface
выглядит следующим образом:
interface RetrofitCalls {
@get:GET("lnjb8")
val posts:Observable<List<RetrofitVariables>>
}
У меня есть класс для десериализации данных Json
в constructor
:
class RetrofitVariables(var name: String, var age: Int, var vehicle: String) {}
Тогда в моем основном классе мой строитель выглядит так:
var myRetrofit = Retrofit.Builder()
.baseUrl("https://api.myjson.com/bins/")
.addConverterFactory(GsonConverterFactory.create())
.build()
Но отсюда я совершенно не понимаю, как получить данные Json
.Итак, мои вопросы: как использовать интерфейс для отображения необработанных данных Json
(с консолью все в порядке) и как десериализовать данные Json
?
ОБНОВЛЕНИЕ Я добавил это: в interface
:
@GET("lnjb8")
fun findPosts(): Call<List<RetrofitVariables>>
и в main
классе:
var repository = myRetrofit.create(RetrofitCalls::class.java)
val jsonVariables = repository.findPosts().execute().body()
jsonVariables!!.forEach { println("TAG " + it) }
Это правильно?Он продолжает падать, и я думаю, что это связано с тем, что это синхронный вызов, а не асинхронный вызов.Я где-то видел, что можно использовать .enqueue()
как в jasonVariables.enqueue()
, но я не уверен, как его использовать.