2016-12-19 2 views
0

ジャクソンはフィールドレベルで@JsonIgnorePropertiesアノテーションを持っていますが、素晴らしいですが、いつか大きくなることもあります。@JsonIgnoreOtherPropertiesのようなものはありますか?

@JsonIgnoreProperties({ "name", "phone", ... "20th item"}) 
private User user; 

私のようなものを探しています:だから、これはすべてのフィールドが、電子メールを無視し

@JsonIgnoreOtherProperties("email") 
private User user; 

@JsonIgnoreOtherPropertiesのようなものはありますか?

1))@JsonViewhttp://wiki.fasterxml.com/JacksonJsonViews使用:

答えて

0

は、私はそれが存在するが、(既存のソリューション以外の)あなたが欲しいものを達成するためのいくつかの方法があるとは思いません。例については、What is the JSON View class in Jackson and how does it work?を参照してください。

2)最小のフィールドセット(おそらくUserMinimal)を含む別のUserビューを作成する。他のUserビューと同じインターフェースを継承して、実際に同じエンティティを表していることを示すことができます。

3)オブジェクトマッパーをカスタマイズし、フィルターを使用する。例については、How do I exclude fields with Jackson not using annotations?を参照してください。

個人的には、単純なユースケースを使用した場合は最初のソリューションを使用し、さらに複雑な場合は2番目の方法を選択します。私は、オブジェクトマッパーをカスタマイズすることで、私の経験でエラーが起こりやすいパスを導くと思うので、3番目の選択肢は嫌いです。

あなたの注釈のアイデアは面白いと思われます。私は機能要求(それはhttps://github.com/FasterXML/jackson-annotations/issuesになるだろうと思う)としてそれを置くことを検討します。

関連する問題