Я использую retrofit2 + Moshi в Kotlin для подключения к серверу.
Все ответы обернуты атрибутом 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": {}
}
Я получаю JsonDataException из-за bar не может быть нулевым.
Есть ли способ для случаев, когда атрибут результата является пустым, считать его пустым с использованием универсального адаптера ?
На данный момент я перехватил JsonDataExceptionисключения и возвращают ноль для этих случаев, но я не доволен этим решением из-за того, что результаты без данных являются действительными ответами.Кроме того, я не смогу отличить ответ без результата или от неправильного ответа.
Есть идеи?
ПРИМЕЧАНИЕ. Я не могу изменить ответы сервера.