我有这个案例类
case class Contact(id: String, firstName: String, lastName: String)
我希望Jackson Scala对象映射器在缺少三个字段中的任何一个时失败,例如:
val mapper = new ObjectMapper() with ScalaObjectMapper
mapper.registerModule(DefaultScalaModule)
mapper.readValue[Contact](""""{"id":"123","firstName":"John"}""")
但在Json字符串中给出其他字段时会成功,例如:
mapper.readValue[Contact](""""{"id":"123","firstName":"John","lastName":"Test","age":"24"}""")
我确实尝试使用@JsonIgnoreProperties(ignoreUnknown = true)
和mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
,但这两个选项似乎都禁用了整个验证,而不是忽略其他字段。
答案 0 :(得分:2)
@JsonProperty(required=true)
是执行此操作的正确方法,但尚未实现反序列化。
请注意,从2.0开始,BeanDeserializer不使用此属性:预计会为稍后的次要版本添加支持。
此功能的票证:https://github.com/FasterXML/jackson-databind/issues/230
我会在反序列化后立即检查所需的值,但也许其他人可以提出解决方法。