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;