【发布时间】:2021-12-16 21:05:24
【问题描述】:
我有一个服务接收包含以下内容的 JSON:
{
"name": "test",
"gender": "NOT_VALID"
}
JSON 应该映射到这个对象“Person”
data class Person(var name: String, var gender: Gender)
Person 有一个名字(字符串),而 Gender 是一个枚举,例如:
enum class Gender() {
Male,
Female,
NotExplicit
}
我正在尝试实现一个映射器,当给定的 Gender 无法与属于枚举的显式值匹配时,该映射器会失败。 例如,如果我尝试执行以下操作:
ObjectMapper.personValidate(text: String): Person =
try {
val mapper = ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
val readValue: Person = mapper.readValue(text, Person::class.java)
val person: Person = mapper.readValue(ByteArrayInputStream(text.toByteArray()), Person::class.java)
person
} catch (e: Exception) {
when (e) {
is JsonParseException, is JsonMappingException -> {
throw PersonException()
}
else -> throw e
}
}
我希望出现异常而不是 Person 对象。
当值不匹配时,此代码现在将性别映射为 null。
有什么线索吗?
【问题讨论】:
标签: kotlin objectmapper