Jackson應用三 物件屬性的控制
阿新 • • 發佈:2018-12-20
通常都是通過第二篇介紹的Full Data Binding技術迅速享受Jackson帶來的方便快捷。但是又很快就碰到一些小的問題,
如何忽略某些屬性,不讓它參與序列化。(請別誤會,這裡不是談Java serializable機制)
還是蠻簡單的,一個Annotation而已。修改一下Response.java檔案,在message屬性上加上@JsonIgnore
import com.fasterxml.jackson.annotation.JsonIgnore;import lombok.Getter;import lombok.Setter;/** * * @author chenshu */public class Response { @Getter @Setter private String status; @JsonIgnore @Getter @Setter private String message;}
App.java程式碼如下:/** * Hello world! * */public class App { public static void main( String[] args ) throws IOException { ObjectMapper mapper = new ObjectMapper(); // create once, reuse String jsonSource = "{\"message\":\"Login succeeded!\",\"status\":0}"; Response response = mapper.readValue(jsonSource, Response.class); String result = mapper.writeValueAsString(response); }}
結果是response物件的message欄位為null,再序列化成字串result後,只包含了status。如果想修改屬性名稱(準確的描述是修改屬性的getXX方法的名稱),用下面的Annotation:
@JsonProperty("newName")
很快又有需求來了。如果一個類的屬性我在一種情況下需要序列化幾個到JSON物件,然後在另一種情況下又需要序列化另外幾個到JSON物件。上面的方式就不行了。
具體可以參考下面的文件JSON Filter