【发布时间】:2019-05-14 17:41:14
【问题描述】:
我在 Kotlin 中使用 retrofit2 + Moshi 连接到服务器。
所有响应都用 result 属性包装。我创建了一个通用数据类,如下所示
@JsonClass(generateAdapter = true)
data class CommonResponse<T>(val result: T?)
如果结果属性不为空,例如:
{
"result": {
"bar": 1
}
}
拥有一个数据类 Foo 并在 Foo 中使用泛型
data class Foo(val bar: Int)
interface {
@Path("/foo")
fun getFoo(): CommonResponse<Foo>
}
但是如果result属性为空如下
{
"result": {}
}
由于 bar 不能为空,我收到 JsonDataException。
对于结果属性为空的情况,是否有任何方法将其视为空使用通用适配器?
到目前为止,我所做的是捕获 JsonDataException 异常并在这些情况下返回 null,但我对这个解决方案不满意,因为结果 w/o 数据是有效响应。此外,我无法区分没有结果的响应或无效响应。
有什么想法吗?
注意:我无法修改服务器响应。
【问题讨论】: