読者です 読者をやめる 読者になる 読者になる

JerseyでJSONシリアライズ対象外のプロパティを指定する (1)

JAX-RS Jersey

JerseyでJSONを帰す場合には、以下のいずれかの方法を使用します。

対象オブジェクトのうち特定のプロパティをシリアライズ対象外とするには、JAXBを使用する場合には、@XmlTransientをシリアライズ対象外にしたいプロパティに付与します。
JAXBを使用しない場合には、Jacksonというライブラリを使用してJSONにシリアライズされるため、こちらにあるとおりJackosnでの指定が必要になります。このドキュメントを見ると以下のいずれかの方法が使用できます。

  • プロパティに @JsonIgnoreをつける
  • クラスに@JsonIgnorePropertiesをつけて無視するプロパティのリストを記述する
  • JacksonMixInAnnotationsを使用する

最初の2つの方法は対象オブジェクトにアノテーションをつける必要があり、Jacksonへの依存が発生することが問題になる場合には、JacksonMixInAnnotationsを使用することになります。Jerseyから使用するときの設定方法まで調べていないのですが。。
また、JacksonはJAXBのアノテーションも読み取るようなので、結局、JAXBの@XmlTransientでもよいようです。そんなに気にする必要はないと思いますが、JAXBのアノテーションをつけるのがいやでJacksonを使っている場合には本末転倒になりますね。。