Де / Сериализация Либо через Джексона - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь реализовать Either в своем проекте, используя реализацию из Arrow (https://arrow -kt.io / docs / datatypes / либо / ), либо используя свою собственную. Проблема, с которой я сейчас сталкиваюсь - это де-сериализация этого класса через Джексона. Я попытался добавить аннотации к своему собственному (не работающему) коду:

@JsonTypeInfo(use= JsonTypeInfo.Id.CLASS, include= JsonTypeInfo.As.PROPERTY, property="class")
@CordaSerializable
sealed class Either<out L, out R> {

    data class Left<out L>(val a: L) : Either<L, Nothing>()
    data class Right<out R>(val b: R) : Either<Nothing, R>()

    val isLeft: Boolean get() = this is Left<L>
    val isRight: Boolean get() = this is Right<R>

    @JsonValue
    fun <C> fold(ifLeft: (L) -> C, ifRight: (R) -> C): C {
        when (this) {
            is Left -> return ifLeft(a)
            is Right -> return ifRight(b)
        }
    }
}

В противном случае я также хотел бы использовать mixin с библиотекой Arrow, но я думаю, что у меня возникнут аналогичные проблемы.

Заранее спасибо за любую помощь!

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