Kotlin наследование переменных в сочетании с Gson.to Json () - PullRequest
0 голосов
/ 06 мая 2020

У меня есть система наследования в моем kotlin ktor-сервере.

Имея следующие классы:

open class ApiView {

    var type = this.javaClass.simpleName

    open var toolbar : ToolbarWidget? = null

}

class ToolbarWidget {

    var title : String? = null

    object Factory {
        fun create() : ToolbarWidget {
            return ToolbarWidget().apply { 
                title = "Hello"
            }
        }
    }
}
class MainApiScreen : ApiView() {

    override var toolbar : ToolbarWidget? = ToolbarWidget.Factory.create()
        get() = field
        set(value) {}

}

Теперь в бэкэнде в определенный момент MainApiScreen будет построен и сериализован в json, чтобы быть потребляется через веб-сервис RESTful.

вот так:

val json = Gson().toJson(MainApiScreen())
call.respond(json)

Я хочу, чтобы код перезаписывал панель инструментов в MainApiScreen, которая определяется суперклассом ApiView. и верните это.

Однако я получаю следующую ошибку:

java.lang.IllegalArgumentException: class routing.app.views.MainApiScreen declares multiple JSON fields named toolbar

Возможно, это можно исправить, сделав ApiView абстрактным, но я все же хочу, чтобы класс имел значения по умолчанию в случае поле не замещается дочерним классом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...