Jackson 動態Bean

爲了解決json字符串有不少屬性, 可是沒必要每一個屬性都映射到pojo的屬性。
@JsonProperty : 標記一個方法是一個屬性的getter或setter方法, 也即把java屬性和json域關聯起來
@JsonCreator: 定義從json字符串到java對象的構造方法, 在數據綁定的時候使用到
@JsonAnyGetter, @JsonAnySetter: 標記一個方法讀取或設置不被其餘java屬性處理的域, 它們會處理全部不被其餘屬性處理的域, 這些域被做爲鍵值對存儲在一個map中。java

e.g:git

AlbumsDynamic albums = mapper.readValue(new URL(url), AlbumsDynamic.class);

public class AlbumsDynamic {
    private String title;
    private DatasetDynamic[] dataset;
    ...
}

public class DatasetDynamic {
    private String album_id;
    private String album_title;
    private Map<String , Object> otherProperties = new HashMap<String , Object>();
 
    @JsonCreator
    public DatasetDynamic(@JsonProperty("album_id") String album_id, @JsonProperty("album_title") String album_title) {
        this.album_id = album_id;
        this.album_title = album_title;
    }
 
    public String getAlbum_id() {
        return album_id;
    }
 
    public void setAlbum_id(String album_id) {
        this.album_id = album_id;
    }
 
    public String getAlbum_title() {
        return album_title;
    }
 
    public void setAlbum_title(String album_title) {
        this.album_title = album_title;
    }
 
    public Object get(String name) {
        return otherProperties.get(name);
    }
 
    @JsonAnyGetter
    public Map<String , Object> any() {
        return otherProperties;
    }
 
    @JsonAnySetter
    public void set(String name, Object value) {
        otherProperties.put(name, value);
    }
}

http://www.studytrails.com/java/json/java-jackson-introduction/
https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations
http://www.studytrails.com/java/json/java-jackson-annotations-dynamic-beans/github

相關文章
相關標籤/搜索