fastjson @JSONField


此文來源於:https://blog.51cto.com/xiaok007/2164029




1.作用在FIELD(成員變量上) 注意:1、若屬性是私有的,必須有set*方法。否則無法反序列化。 package com.zhujie; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; public class User { @JSONField(name="new_username") private String username; @JSONField(name="new_password") private String password; ... @Override public String toString() { // TODO Auto-generated method stub return JSONObject.toJSONString(this); } public static void main(String[] args) { User user = new User(); user.setUsername("lili"); user.setPassword("123456"); String jsonStr = JSONObject.toJSONString(user); System.out.println("bean to json:"+jsonStr); User user1 = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), User.class); System.out.println("json to bean:"+user1.toString()); } } 輸出結果是: bean to json:{"new_password":"123456","new_username":"lili"} json to bean:{"new_password":"123456","new_username":"lili"} 通過上面的例子可以看出@JSONField注解可以改變序列化和反序列化字段的名稱。 2.注解作用在set、get方法之上 @JSONField(name="new_username") public String getUsername() { return username; } @JSONField(name="new_username") public void setUsername(String username) { this.username = username; } 注解作用在方法之上序列化和反序列化生成的對象的字段名稱都是new_username,可以改變字段的名稱,跟上面直接注解到屬性上是一樣的效果。 3.注解中的serialize、deserialize用法 翻看源碼可以看到serialize、deserialize的默認值都是true,也就是說默認情況下(即使不設置serialize、deserialize屬性)是允許對象序列化和反序列化的。 @JSONField(name="new_password", serialize=false, deserialize=false) private String password; 4.注解中的format用法 源碼中format屬性的默認值是“”空字符串,我所了解到的是用在日期屬性上的格式化,如果有其它的用法可以相互交流學習。 @JSONField(format="yyyy-MM-dd HH:mm:ss") private Date currentDate; 5.注解中的serialzeFeatures、parseFeatures屬性可以控制序列化的一些規則。 通常情況下如果一個 字段的屬性值為null時序列化或者反序列化的時候是不會將該字段輸出的; 那么我們有沒有辦法來控制呢? 答案是可以的; 我們可以通過serialzeFeatures、parseFeatures的屬性值SerializerFeature.WriteMapNullValue來控制,當屬性的值為null時也輸出該字段,字段的值為null。 @JSONField(format="yyyy-MM-dd HH:mm:ss", serialzeFeatures=SerializerFeature.WriteMapNullValue) private Date currentDate; 當然SerializerFeature類中還有很多其他的屬性,我會在接下來的章節中講解。 6.使用ordinal指定字段順序 缺省fastjson序列化一個java bean,是根據fieldName的字母序進行序列化的,你可以通過ordinal指定字段的順序。這個特性需要1.1.42以上版本。 @JSONField(ordinal =2) private String username; @JSONField(ordinal =3) private String password; @JSONField(ordinal =1) private Date currentDate;

 


免責聲明!

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



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