Я хочу десериализовать простой JSON до TestEntity
:
data class TestEntity (
val id: Long,
val objType: String?
)
А вот json, где свойство id
намеренно отсутствует:
val json = """{
"objType":"type"
}""".trimMargin()
Я пытаюсь десериализовать это, используя:
val mapper = ObjectMapper().registerKotlinModule()
.enable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)
val object = mapper.readValue(json, TestEntity::class.java)
Поскольку я использую функцию FAIL_ON_NULL_FOR_PRIMITIVES
и регистрирую модуль kotlin, я ожидаю MissingKotlinParameterException
, но вместо этого получаю:
com.fasterxml.jackson.databind.exc.MismatchedInputException: отсутствует обязательное свойство создателя 'id' (индекс 0)
Как я заметил, MismatchedInputException
выбрасывается только для примитивных типов. Если я использую какой-то пользовательский объект и пропущу его в json, я получу MissingKotlinParameterException
, как и ожидалось.
Итак, мой вопрос: можно ли поймать MissingKotlinParameterException
с примитивными типами, как в моем примере? Есть ли обходной путь?
Версии: jackson-databind v2.9.7
и jackson-module-kotlin v2.9.7