Проблема при десериализации сериализованного объекта - PullRequest
0 голосов
/ 17 декабря 2018
  • У меня есть класс данных kotlin, имеющий параметризованный конструктор и метод, который получает свои выходные данные на основе свойства.
  • Я аннотировал этот метод с помощью @JsonProperty, чтобы его производные выходные данные также можно было сериализовать для вывода JSON, поскольку это было требованием для меня.
  • Теперь возникает проблема, когда я пытаюсь десериализоватьэтот JSON, и он не находит никакого поля для производного

Невозможно создать экземпляр MyDataClass, проблема: Никогда не следует вызывать set() для свойства без установщика ('производный-указатель')

@JsonIgnoreProperties(ignoreUnknown = false)
data class MyDataClass(
   val boolProp: Boolean = true,
   val dataProp: DataProp = DataProp(),
   val mainProp: String? = null
) : Serializable {

   @JsonProperty
   @Suppress("unused")
   fun derivedProp(): List =
      someLogicOnMainProp(mainProp)

}

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Я решил эту проблему, используя свойство @JsonProperty ниже:

@JsonProperty(access = Access.WRITE_ONLY)
0 голосов
/ 17 декабря 2018

Если вы используете свойство вместо функции, вы все равно можете определить установщик и просто игнорировать его при вызове.Не самое красивое решение, но должно сработать:

@get:JsonProperty
var derivedProp: List<Any>
    get() = someLogicOnMainProp(mainProp)
    set(value) { /* do nothing */ }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...