2

私はこのケースクラスを持っています

case class Contact(id: String, firstName: String, lastName: String)

3つのフィールドのいずれかが欠落している場合、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)、追加のフィールドを無視するのではなく、検証全体を無効にしているようです。

4

1 に答える 1

2

@JsonProperty(required=true)これを行うには正しい方法ですが、逆シリアル化はまだ実装されていません。

Javadoc は次のように述べています

2.0 の時点では、このプロパティは BeanDeserializer では使用されないことに注意してください。サポートは、後のマイナー バージョンに追加される予定です。

この機能のチケット: https://github.com/FasterXML/jackson-databind/issues/230

逆シリアル化の直後に必要な値を自分で確認しますが、他の誰かが回避策を考え出すことができます。

于 2013-07-29T14:04:49.413 に答える