【发布时间】:2020-02-02 21:24:06
【问题描述】:
我使用一个以数组形式返回数据的 API,比如这个 JSON 字符串(我们称之为“任务”)
[
{"id": "5d9478a643a7520041b367c7",
"name": "Task 1",
"value": 2
},
{"id": "5d9478a243a7520041b367c6",
"name": "Task 2",
"value": 10
},
]
我想将此响应解析为一个列表。所以我用生成的适配器创建了相应的数据类
@JsonClass(generateAdapter = true)
data class Task(
var id: String,
var name: String,
var value: Int
)
我的改造服务是这样的
private val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
private val retrofit = Retrofit.Builder()
.addConverterFactory(MoshiConverterFactory.create(moshi))
.baseUrl(BASE_URL)
.build()
interface NetworkService {
@GET("tasks")
suspend fun tasks(): Response<List<Task>>
}
但我想使用容器类型,例如:
data class TaskList(val tasks: List<Task>)
作为网络响应结果。在不创建自定义适配器的情况下是否可以这样做,或者我需要创建一个自定义适配器并将其传递给 moshi builder?
【问题讨论】:
-
您是否尝试将
Response<List<Task>>更改为Response<TaskList>? -
@Neo 问之前你自己试过了吗?不行,请看JSON字符串,你看到里面有“tasks”数组了吗?