获取MismatchedInputException而不是MissingKotlinParameterException

时间:2019-06-14 08:41:55

标签: json kotlin jackson deserialization jackson-modules

我想将简单的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.7jackson-module-kotlin v2.9.7

0 个答案:

没有答案