最近では、より頻繁にjackjsonを使用して、注釈を総括するために、より多くのJSON関連の知識ポイントを使用
ジャクソンの依存達人
<依存> <groupIdを> com.fasterxml.jackson.core </ groupIdを> <たartifactId>ジャクソンデータバインド</たartifactId> <バージョン> 2.5.3 </バージョン> </依存関係>
これだけで合計アップでは、最近コメントに使用。
JsonProperty @ 1:属性のこの注釈は、action属性の名前はJsonProperty(「名前」)、@、など実名属性名にシーケンスとして、別の名前としてシリアライズされます。
そのようなJavaオブジェクトのプロパティとして、属性名の名前を変更するには、こぶの書き込み仕様に従っているが、データベース設計のシーンで使用された場合、ここでの時間のマップを作り、多くの接続には下線が引かれています
あなたは、アノテーションを使用することができます。
たとえば、次のように使用JavaBeanのテーブル構造に以下の注釈:
パブリック クラスはcustomerinfo { プライベート int型のID。 // クラス内のフィールドの物理的な構造に使用@JsonProperty注釈マップ @JsonProperty(「CUSTOMER_NAME」) プライベート文字列CUSTOMERNAME。 @JsonProperty( "CUSTOMER_ID" ) プライベート文字列はcustomerId。 @JsonProperty( "product_idの" ) プライベート文字列のProductID。 @JsonProperty( "source_addressに" ) プライベート文字列sourceAddress。 公共 INT のgetId(){ 戻りID。 } 公共 ボイド SETID(int型のID){ この .ID = ID。 } パブリック文字列getCustomerName(){ 戻りCUSTOMERNAMEと、 } 公共 ボイドsetCustomerName(文字列CUSTOMERNAME){ この .customerName = CUSTOMERNAME。 } パブリック文字列getCustomerId(){ 戻り得意先。 } 公共 ボイドsetCustomerId(文字列はcustomerId){ この .customerId = はcustomerId。 } パブリック文字列getProductId(){ 戻り商品コードと、 } 公共 ボイドsetProductId(文字列PRODUCTID){ この .productId = PRODUCTID。 } パブリック文字列getSourceAddress(){ 戻りsourceAddress。 } 公共 ボイドsetSourceAddress(文字列sourceAddress){ この .sourceAddress = sourceAddress。 } }
2. @注釈付き完全に無視され、対応する方法属性フィールドのプロパティまたはメソッド(好ましくは、属性)のためJsonIgnoreこのアノテーションは、偶数フィールドまたはメソッドも自動的に検出またはそのすることができる場合
彼は、一般的にプロパティやメソッド、プロパティが含まれていません返さつまりJSONデータで指定された、指摘しています。
使用シナリオ:リスト<に必要レセプションに送信されるデータにはcustomerinfo> JSON形式。しかし、基本的なエンティティクラスのフィールド属性の値は、スナップショットの属性フィールドに格納されています。この時点で、私は、ビジネス層で処理を行うことができ、
エンティティ・クラス内の対応するフィールドの基本的な性質のスナップショット属性フィールドに割り当てられた値。最後に、私は、その後、エンティティクラスのスナップショット@JsonIgnoreのプロパティにメモを追加し、これらの二つのフィールドのスナップショットに含まれていないJSONデータを返すように願っています
そして、最終的にJSONデータは含まれません戻っはcustomerId とPRODUCTID 2つの属性値を。
パブリック クラスはcustomerinfo { プライベート int型のID。 // 使用@JsonIgnoreコメントをJSONデータを生成し、このフィールドは無視されます プライベート文字列CUSTOMERNAME。 @JsonIgnore プライベート文字列はcustomerId。 @JsonIgnore プライベート文字列のProductID。 プライベート文字列sourceAddress。 公共 INT のgetId(){ 戻りID。 } 公共 ボイド SETID(int型のID){ この .ID = ID。 } パブリック文字列getCustomerName(){ 戻りCUSTOMERNAMEと、 } 公共 ボイドsetCustomerName(文字列CUSTOMERNAME){ この .customerName = CUSTOMERNAME。 } パブリック文字列getCustomerId(){ 戻り得意先。 } 公共 ボイドsetCustomerId(文字列はcustomerId){ この .customerId = はcustomerId。 } パブリック文字列getProductId(){ 戻り商品コードと、 } 公共 ボイドsetProductId(文字列PRODUCTID){ この .productId = PRODUCTID。 } パブリック文字列getSourceAddress(){ 戻りsourceAddress。 } 公共 ボイドsetSourceAddress(文字列sourceAddress){ この .sourceAddress = sourceAddress。 } }
3. @ JsonIgnorePropertiesこのアノテーションは、アノテーションクラスで、役割は、シリアライズとデシリアライズが影響を受けて、無視プロパティの一部では、JSONのシリアル化するJava Beanです。
JsonFormat @ 4(好ましくはプロパティに)プロパティまたはメソッドに対するこの注釈、日付型を容易に私達の所望のモードに直接変換することができます。
例子:@JsonFormat(パターン= "YYYY-MM-DD HH:MM:SS")
@JsonFormat(パターン= "YYYY-MM-DD HH:MM:SS" ) プライベート日updateTime。
JsonSerialize @ 5.このような二重のシリアライズその後部2つの小数点以下の桁数の制限など、当社のカスタム直列にコードを埋め込むための属性またはgetterメソッド、ためこの注釈。
6. JsonDeserialize @この注釈は、フィールドまたは@JsonSerialize上記と同様、当社のカスタムに埋め込まれていてもよいデシリアライズコード、のsetterメソッドで使用されています。
7. @ JsonInclude null属性値は、直列化に参加しません。例:@JsonInclude(Include.NON_NULL)