Я использую Ktor с Gson и хочу сериализовать интерфейс.Однако вместо сериализации только полей интерфейса gson сериализует всю реализацию со всеми полями.
Пример
Интерфейс
interface MyInterface {
var id: Int
}
Реализация
data class MyImplementation(
override var id: Int,
var name: String
) : MyInterface
Конфигурация Ktor
Настройка Gson и конечной точки для MyInterface.Я ожидаю, что call.respond(implementation as MyInterface)
приведет к сериализации только интерфейса.
install(ContentNegotiation) {
gson {
setPrettyPrinting()
}
}
install(Routing) {
get("/myinterface") {
val implementation = service.getMyImplementation()
call.respond(implementation as MyInterface)
}
}
Проблема
Когда вы запрашиваете объект типа MyInterface
из конечной точки Ktor, вы получаете обаполя id
и name
.
Кто-нибудь знает, как заставить Gson сериализовать только интерфейс?