2016-07-27 6 views
2

私はSpring MVCとMyBatisでJavaを使用してデータベースに接続しています。私は口座テーブルを持っていますが、いくつかのクエリーではすべてのフィールドが必要ですが、他のフィールドではいくつかのプロパティを削除する必要があります。ResponseBodyのJava removeプロパティー

たとえば、MyBatisクエリの後に基本情報を表示するには、いくつかのフィールドがnullで、他のフィールドが偽であるか0であっても、クエリで必要としないためです。

{ 
    "accountName": "Pagosonline.com", 
    "country": "CO", 
    "commercialName": "PayU - Latam", 
    "city": "Chiquinquirá", 
    "location": null, 
    "secureName": null, 
    "description": null, 
    "document": "8301097231", 
    "localOperation": false, 
    "address": null, 
    "acceptInternationalTransactions": false, 
    "balance": 0 
} 

だから、私はこの注釈を使用:

​​

をそして今、私がnull値を持たないこのResponseBody持っている:当初、私は私のResponseBodyでこれを持っていた

{ 
    "accountName": "Pagosonline.com", 
    "country": "CO", 
    "commercialName": "PayU - Latam", 
    "city": "Chiquinquirá", 
    "document": "8301097231", 
    "localOperation": false,  
    "acceptInternationalTransactions": false, 
    "balance": 0 
} 

しかしなどをIクエリで最後の3つのフィールドを使用しないで、それらはfalseと0が返されます。私が考えていた代替案は、必要なフィールドだけで別のエンティティモデルを作成することです。しかし、まず、他の解決策があるかどうかを知りたいのであれば、おそらくResponseBodyからこれらのフィールドを削除してください。

予想される応答:

{ 
    "accountName": "Pagosonline.com", 
    "country": "CO", 
    "commercialName": "PayU - Latam", 
    "city": "Chiquinquirá", 
    "document": "8301097231" 
} 
+0

この '@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL);'を試して、クラスレベルではなくフィールドでアノテーションを試してみることができますか? 'Include.NON_NULL'の代わりに' Include.NON_EMPTY'を試してください – Lucky

答えて

0

は、あなたのアカウントクラスに@JsonIgnoreProperties注釈を追加しようとしたことがありますか?ドキュメントとして

@JsonIgnoreProperties(value = { "balance", "acceptInternationalTransactions", "localOperation" }) 

言う特性が(デシリアライズ中に)読み取る(シリアライズ中) 特性の抑制シリアライゼーションのいずれかに使用される、またはJSON の処理を無視することができる

注釈。

+0

そうですが、このモデルを使用しているすべてのメソッドのプロパティは無視されます。私はいくつかの特定のケースでそれらを無視する必要があります。 – AndreFontaine

0

@JsonFilterを使用して、独自の基準に基づいてPropertyFilterを作成することができます。それは本当によく文書化されているhereです。