Получение MismatchedInputException вместо MissingKotlinParameterException - PullRequest
0 голосов
/ 14 июня 2019

Я хочу десериализовать простой 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

...