0

1-モジュールにデシリアライザーを追加する方法、ObjectMapperまたは特定の名前または正規表現パターンを持つすべてのフィールドをデシリアライズするためにピックアップされる方法はありますか? .*url.*(たとえば、パターンに一致するすべてのフィールド?

2- 特定の正規表現パターンに一致する値を持つすべてのフィールドをデシリアライズするためにピックアップされるデシリアライザーを登録することは可能ですか? (例http://.+)。

ObjectMapper3- または、1 と 2 の代わりに使用できる に登録するのではなく、クラスで使用できる注釈はありますか?

4

2 に答える 2

0

Bean のプロパティを検査し、正規表現を適用し、必要に応じてカスタム シリアライザーをインストールする Bean シリアライゼーション カスタマイザーを登録できます。

タトゥを引用するには:

拡張ポイントは、モジュール実装を介して実行できる BeanSerializerModifier を追加することです。SimpleModule はこれに便利なメソッドを追加しないため、Module#setupModule() を実装し、「addBeanSerializerModifier」を呼び出す必要があります。

デシリアライズ側には並列構造があります。

于 2012-11-13T23:20:09.070 に答える
0

(1) と (2) については、いいえ。

3 の場合、指定された Serializer または Deserializer をオーバーライドしてプロパティに使用できます。

public class POJO {
  @JsonSerialize(using=MySerializer.class)
  public String text;
}

(1) に対してできることは、 のカスタム シリアライザーを登録し、String.classそれを として定義するだけContextualSerializerです。そのcreateContextual()メソッドが呼び出されると、それがどのプロパティに使用されているかを確認できます。名前が正規表現と一致する場合は、代替の文字列シリアライザーを構築できます。そうでない場合は、 を呼び出すだけの単純なものですJsonGenerator.writeString()

(2) の場合は、カスタム String シリアライザーを定義し、シリアライズ中に値を比較して、適切なアクションを実行します。

于 2012-11-14T01:08:59.927 に答える