Интерфейс сериализации Ktor + Gson вместо реализации - PullRequest
0 голосов
/ 24 сентября 2019

Я использую 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 сериализовать только интерфейс?

...