2016-10-27 18 views
0

私はブラウザにjsonとしてレンダリングしているクラスのオブジェクトのリストを持っています。今、特定の条件が満たされない場合、私はjsonの応答から除外したいオブジェクトに特定の属性があります。いくつかの条件に基づいてjsonのフィールドを抽出する

これらの属性はリストの一部のオブジェクトに対して存在し、そのリストの他のオブジェクトには存在しません。

どのように達成できますか?

鉱山はスプリングブートアプリケーションです。ジャクソンが使用されています。

私は、EntityをBeanに変換するためにTransformerを使用し、次にBeanをjsonに変換するためにResponseEntityを使用しています。

解決策をご提案ください。

ありがとうございました。

答えて

3

これらの値(除外したい値)をnullにしてから、@JsonIncludeアノテーションを使用してすべてのヌル値を抑制します。

@JsonInclude(Include.NON_NULL) 
class Foo { 
    String bar; 
} 

(オブジェクト全体のためにnull値を除くとは対照的に)あなたも、バージョン2.x +で

public class Foo { 
    private String field1; 
    private String field2; 

    @JsonInclude(Include.NON_NULL) 
    private String field3; 
    ... 
    ... 
} 

を特定のフィールドのnull値を除外することができますこの注釈の構文は次のとおりです。

@JsonInclude(JsonSerialize.Inclusion.NON_NULL) 

それとももグローバルオプション設定することができます。春のプロジェクトで

objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 

を、objectMapperはあなたがどちらか@AutowiredかApplicationContextの

+0

から取得できるクラスObjectMapperのシングルトンインスタンスである私が適用私の属性の上にこのannotaion。しかし、それは私にその注釈のコンパイルエラーを与えています。 しかし、ジャックソンジャーは私の依存関係リストにあります。 どうすれば解決できますか? @JsonSerialize(= Inclusion.NON_NULLを含める) しかし、それはJsonSerializeは非推奨クラスであると言います: –

+0

私は –

+0

は、私はそれがこの注釈を使用して作業しました[OK]をジャクソンの注釈-2.6.4.jarを使用しています。我々は同じもののためのより良い選択肢を持っていますか? –

関連する問題