Retrofit2 是一个用于 Android 和 Java 的 RESTful HTTP 客户端库,它简化了与 Web 服务的交互。Kotlin 是一种现代的静态类型编程语言,可以与 Java 完全兼容,并且运行在 Java 虚拟机(JVM)上。
Retrofit2 的类型主要包括:
Call<T>
:用于同步和异步请求。Observable<T>
、Flowable<T>
:用于响应式编程。Single<T>
、Maybe<T>
:用于 RxJava 集成。Retrofit2 适用于需要与 RESTful API 进行交互的 Android 和 Java 应用,例如获取数据、提交表单等。
假设我们有一个 JSON 数据如下:
{
"users": [
{
"id": 1,
"name": "John Doe",
"posts": [
{
"id": 101,
"title": "First Post"
},
{
"id": 102,
"title": "Second Post"
}
]
},
{
"id": 2,
"name": "Jane Smith",
"posts": [
{
"id": 103,
"title": "Third Post"
}
]
}
]
}
我们可以定义以下 Kotlin 数据类:
data class User(
val id: Int,
val name: String,
val posts: List<Post>
)
data class Post(
val id: Int,
val title: String
)
然后定义 Retrofit 接口:
interface ApiService {
@GET("users")
fun getUsers(): Call<List<User>>
}
接下来,配置 Retrofit 实例:
val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val apiService = retrofit.create(ApiService::class.java)
最后,发起网络请求并处理响应:
apiService.getUsers().enqueue(object : Callback<List<User>> {
override fun onResponse(call: Call<List<User>>, response: Response<List<User>>) {
if (response.isSuccessful) {
val users = response.body()
users?.forEach { user ->
println("User: ${user.name}")
user.posts.forEach { post ->
println(" Post: ${post.title}")
}
}
} else {
println("Request failed: ${response.message()}")
}
}
override fun onFailure(call: Call<List<User>>, t: Throwable) {
println("Request failed: ${t.message}")
}
})
通过以上步骤,你可以使用 Retrofit2 和 Kotlin 从 JSON 中提取嵌套列表。
领取专属 10元无门槛券
手把手带您无忧上云