引用のjar:ジャクソン・コア、ジャクソン・データバインド、ジャクソン、注釈
http://central.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.9.9/jackson-core-2.9.9.jar
1、ジャクソン基本的な使い方
1.1、Personオブジェクトを作成します
パブリック クラス人{ プライベート文字列名; プライベート整数歳。 公共パーソン(文字列名、整数歳){ この .nameの= 名前; この .age = 年齢; } パブリック文字列のgetName(){ 戻り名。 } }
1.2、Mainメソッドの呼び出し
注:オブジェクトは、プロパティは、JSONは(注釈メソッドを除く)メソッドを取得有効にする必要があり
輸入com.fasterxml.jackson.databind.ObjectMapper。 パブリック クラスメイン{ 公共 静的 ボイドメイン(文字列[]アルジェシュ)がスロー例外{ ObjectMapperマッパー = 新しいObjectMapper()。 人の人 = 新しい人( "ジャクソン"、20 ); System.out.println(mapper.writeValueAsString(人)); } }
出力は次のようになります。
{ "名前": "ジャクソン"}
2、注釈の使用
2.1、JsonPropertyはアノテーションを使用@
@JsonProperty注釈SQLエイリアスフィールドに類似の、注釈のフィールドプロパティを使用して、一連の、元のフィールドのプロパティを置き換えます
@JsonProperty( "userNameに" ) プライベート文字列名;
結果の順序:直列化されたJSON文字列では、ユーザ名は名前を置き換えます
{ "userNameに": "ジャクソン"}
2.2、@ JsonIgnore使用注釈
シリアライズ時に@JsonIgnoreコメントがフィールドを無視することです
@JsonIgnore @JsonProperty( "userNameに" ) プライベート文字列名; @JsonProperty(「userAge」) プライベート整数歳。
シリアライゼーションの結果は:{ "userAge":20}
{ "userAge":20}
2.3、JsonIgnorePropertiesはアノテーションを使用@
類似@JsonIgnorePropertiesの配列と2.3.1は、注釈フィールドエイリアスを使用して、クラス、@JsonIgnore
輸入com.fasterxml.jackson.annotation.JsonIgnore。 輸入com.fasterxml.jackson.annotation.JsonIgnoreProperties。 輸入com.fasterxml.jackson.annotation.JsonProperty。 @JsonIgnoreProperties(値 = { "名前"、 "userAge" }) パブリック クラス人{ @JsonIgnore @JsonProperty( "userNameに" ) プライベート文字列名。 @JsonProperty(「userAge」) プライベート整数歳。 @JsonProperty(「userHeight」) プライベート整数の高さ。 パブリック人物(文字列名、整数年齢、整数高さ){ この .nameの= 名前。 この .age = 年齢; この .height = 高さ; } }
ObjectMapperマッパー= 新しいObjectMapper(); 人の人 = 新しい人(「ジャクソン」、20175 ); System.out.println(mapper.writeValueAsString(人));
実行結果:{ "userHeight":175}
{ "userHeight":175}
2.3.2、JsonIgnoreProperties(ignoreUnknown =真@ ) フィールドを無視するためには、(DeserializationFeatureを等価mapper.disableと一致しないFAIL_ON_UNKNOWN_PROPERTIES)。
注意:直列化復元は、引数なしのコンストラクタが必要
ObjectMapperマッパー= 新しいObjectMapper(); 人の人 = 新しい人(「ジャクソン」、20175 ); System.out.println(mapper.writeValueAsString(人)); // mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)。 System.out.println(mapper.readValue( "{\" sheight \ ":172}"、人クラス).getHeight())。
2.4 @ JsonTypeName @JsonTypeInfo
@JsonTypeName(値= "ユーザ")
@JsonTypeInfo(=含むJsonTypeInfo.As.WRAPPER_OBJECT、使用= JsonTypeInfo.Id.NAME)
層が順に増加しています
シリアライゼーションの結果は:{ "ユーザ":{ "高さ":175}}
{ "ユーザ":{ "高さ":175}}
2.5、@ JsonRootNameコメント
注釈@JsonRootName(「ユーザ」)とmapper.enable(SerializationFeature.WRAP_ROOT_VALUE)に基づいて、2.4に等しい組成物。
2.6、JsonFormat注釈形式の日付形式@
@JsonFormat(パターン= "YYYY-MM-DD HH:MM:SS:SSS"、タイムゾーン= "GMT + 8")
プライベート日付。