我想将Jackson配置为通过映射器而不是注释忽略未知属性,但我无法使其工作.这是一个不及格的测试.它应该会通过,因为我已经将映射器配置为忽略未知属性,但它失败了,因为json包含未知属性(Make).第二个测试使用注释通过.
package paul.demo.training
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.databind.DeserializationFeature
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.shouldBe
class JsonIgnore: FunSpec({
test("Mapper should ignore unknown properties - mapper") {
data class Car(val colour : String)
val json = """
{ "colour" : "Red",
"make" : "Ford"
}
""".trimIndent()
val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES,false)
val car = mapper.readValue(json,Car::class.java)
car.colour shouldBe "Red"
}
test("Mapper should ignore unknown properties - annotation") {
@JsonIgnoreProperties(ignoreUnknown = true)
data class Car(val colour : String)
val json = """
{ "colour" : "Red",
"make" : "Ford"
}
""".trimIndent()
val mapper = jacksonObjectMapper().configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES,false)
val car = mapper.readValue(json,Car::class.java)
car.colour shouldBe "Red"
}
})