1. 程式人生 > >Jackson應用三 物件屬性的控制

Jackson應用三 物件屬性的控制

               

通常都是通過第二篇介紹的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