То, что вы сообщаете, выглядит неправильно, я попробовал ваш код, и он работает как положено.Пожалуйста, проверьте следующий фрагмент кода:
data class Role(val id: String, val name: String)
data class User(val id: String, val name: String, val email: String, val phone: String, val roles: List<Role>)
val objectMapper: ObjectMapper = ObjectMapper().registerModule(KotlinModule())
.registerModule(Jdk8Module())
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
val json = """
{
"id": "1",
"name": "John Smith",
"email": "john@smith@mail.com",
"phone": "+1-541-754-3010",
"roles": [
{"id": "1", "name": "User"},
{"id": "1", "name": "Editor"},
{"id": "1", "name": "Admin"}
]
}
""".trimIndent()
val result = objectMapper.readValue<Optional<User>>(json)
println(result)
Выход
Необязательно [Пользователь (id = 1, имя = Джон Смит, электронная почта = Джон @ Смит)@ mail.com, телефон = + 1-541-754-3010, роли = [Роль (id = 1, имя = Пользователь), Роль (id = 1, имя = Редактор), Роль (id = 1, имя = Администратор)])]
И отладочная проверка действительно сообщает правильные типы