Jackson 庫中@JsonProperty和@JsonAlias註解實現序列化反序列化

chillymint發表於2024-05-20
  Json序列化一般為實體轉化生成的 JSON 資料中直接包含巢狀物件的屬性
   ObjectMapper mapper = new ObjectMapper();     
   Book book = new Book("Learning Java", "Java");    
    Writer writer = new Writer(110, "Mohit", book);     
    String jsonWriter =           mapper.writerWithDefaultPrettyPrinter().writeValueAsString(writer);
    Json反序列化一般為JSON 資料對映到外層實體物件javabean的屬性上
String jsonData =  		    "{" 			  +"\"writerId\" : 111," 			  +"\"mywname\" : \"Mahesh\"," 			  +"\"writerBook\" : {" 			    +"\"bookName\" : \"Learning Spring\"," 			    +"\"bkcat\" : \"Spring\"" 			  +"}" 		   +"}"; 	 
ObjectMapper mapper = new ObjectMapper(); 	 
Writer writer = mapper.readValue(jsonData, Writer.class);
  @JsonProperty是用於定義邏輯屬性的標記註釋。一般被用於JSON的序列化和反序列化。

​ @JsonAlias為反序列化期間接受的屬性定義一個或多個別名,即將JSON資料設定為Java物件。但是在序列化時,即從Java物件獲取JSON時,只使用實際的邏輯屬性名而不是別名。

​ @JsonDeserialize ;JSON字串轉JavaBean反序列化時, 將其他型別欄位轉化為BigDecimal型別

@JsonAlias({"passengerName", "newName"})
private String name;
@JsonProperty("type")
private String specification;
@JsonProperty("count")
@JsonDeserialize(using = BigDecimalDeSerialize.class)
private Bigdicimal amount;

相關文章