我想配置Jackson通过Map器而不是注解来忽略未知属性,但我无法让它工作。这是个失败的测试它应该通过,因为我已经配置了Map器忽略未知属性,但它失败了,因为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"
}
})
1条答案
按热度按时间n9vozmp41#
它应该会通过,因为我已经将Map器配置为忽略未知属性
您还没有这样配置它。您已将其设置为不会在 IGNORED 属性上失败,而不会在 UNKNOWN 属性上失败。因此,如果不将模型设置为 ignore**unknown 属性(在第二个测试中就是这样做的),测试应该失败。
我认为你想设置
FAIL_ON_UNKNOWN_PROPERTIES
,而不是FAIL_ON_IGNORED_PROPERTIES
为false。