Jackson 动态Bean

为了解决json字符串有很多属性, 但是不必每个属性都映射到pojo的属性。
@JsonProperty : 标记一个方法是一个属性的getter或setter方法, 也即把java属性和json域关联起来
@JsonCreator: 定义从json字符串到java对象的构造方法, 在数据绑定的时候使用到
@JsonAnyGetter, @JsonAnySetter: 标记一个方法读取或设置不被其他java属性处理的域, 它们会处理所有不被其他属性处理的域, 这些域被作为键值对存储在一个map中。

e.g:

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/

转载于:https://www.cnblogs.com/helloz/p/10193168.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值