Сериализация свойства Nothing через Джексона - PullRequest
0 голосов
/ 28 марта 2020

Я хочу сериализовать FAIL объект через Джексона:

interface OptionalResult<out ResultType : Any> {

    val data: ResultType?

    object FAIL : OptionalResult<Nothing> {

        override val data: Nothing? = null
    }
}

То, что я получаю {}, но я ожидаю получить {"data": null}.

Как я могу исправить мой объект?

Кстати, следующий объект правильно сериализован:

object FAIL : OptionalResult<Int> {

    override val data: Int? = null
}

1 Ответ

1 голос
/ 02 апреля 2020

Техническая проблема заключается в том, что Джексон определяет, что индикатор, который обычно указывает на существование свойства (publi c или аннотированный установщик), будет отфильтрован, поскольку получатель рассматривается как public void getData(), который ничего не возвращает. Фильтрация выполняется на низкоуровневой обработке, наряду с удалением методов stati c, методов, которые не аннотированы и не следуют соглашению об именах и т. Д.

Возможно, это улучшение можно улучшить, поскольку существует разница между void и Void (аналогично разнице между примитивом и оболочкой). Но это первый раз, когда о таком использовании сообщили.

Одна вещь, которую вы можете попробовать, которая может (или не может) помочь: добавить @JsonProperty для val data. Это может помочь, если фильтрация выполняется только для аннотированных методов доступа.

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