fastjson使用-- @JSONField使用(轉)


@JSONField可以配置到字段和方法上,那不同的配置有什么不同呢?下面我們就來看看具體配置到不同的方法上。

我們在創建實體類的時候,都要求屬性必須創建get和set方法,否則fastjson將不會進行識別,下面我們看看把@JSONField配置到具體的get和set方法上

/**
 * @Title: getDate 
 * @Description: 配置序列化的時候,日期序列化為startDate
 * @return Date
 */
@JSONField(name = "startDate")
public Date getDate() {
    return date;
}
    
/**
 * @Title: setDate 
 * @Description: 配置反序列化的時候,以endDate去匹配
 * @param date
 * @return void
 */
@JSONField(name = "endDate")
public void setDate(Date date) {
    this.date = date;
}
    
/**
 * @Title: getId 
 * @Description: 配置序列化的時候,不序列化id
 * @return int
 */
@JSONField(serialize = false)
public int getId() {
    return id;
}
    
/**
 * @Title: setId 
 * @Description: 配置反序列化的時候,不反序列化id
 * @return void
 */
@JSONField(deserialize = false)
public void setId(int id) {
    this.id = id;
}

具體的代碼,就是上面的,挺簡單的。下面來看看結果:

{"age":25,"name":"LiLei","sex":"男","startDate":1451985134688}
User [id=0, name=LiLei, age=25, sex=男, date=Tue Jan 05 17:04:47 CST 2016

我們看到id既沒有序列化也沒有反序列化,date字段序列化的時候變為了startDate

我們再來看看下面的代碼看看結果跟上面做個比較:

// 反序列化
String jsonStr = "{\"id\":10,\"age\":25,\"name\":\"LiLei\",\"sex\":\"男\",\"startDate\":1451984687404}";
// @JSONField配置了,不反序列化id,date的匹配name為endDate
Uo2 uo = JSON.parseObject(jsonStr, Uo2.class);
System.out.println(uo.toString());

再來看看結果:

User [id=0, name=LiLei, age=25, sex=男, date=null]

這個時候我們看到沒有識別到date,因為我們在date字段的set方法上配置了@JSONField(name = "endDate")所以其在識別的時候,是通過endDate去識別key的,而我們的json數據里根本沒有endDate這個key,所以沒法識別。

 

根據上面我們可以總結出一個結論:

1.序列化(JavaBean --> json)時配置到對應字段的get()方法上

2.反序列化(json --> JavaBean)時配置到對應字段的set()方法上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM