GsonBuilder
生活随笔
收集整理的這篇文章主要介紹了
GsonBuilder
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有時候我們不需要把實體的所有屬性都導出,只想把一部分屬性導出為Json.
有時候我們的實體類會隨著版本的升級而修改.
有時候我們想對輸出的json默認排好格式.
... ...
請看下面的例子吧:
實體類:
?
import java.util.Date;import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName;public class Student {private int id;@Exposeprivate String name;@Expose@SerializedName("bir")private Date birthDay;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Date getBirthDay() {return birthDay;}public void setBirthDay(Date birthDay) {this.birthDay = birthDay;}@Overridepublic String toString() {return "Student [birthDay=" + birthDay + ", id=" + id + ", name="+ name + "]";}}?
測試類
?
import java.util.ArrayList; import java.util.Date; import java.util.List;import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken;public class GsonTest2 {public static void main(String[] args) {//注意這里的Gson的構建方式為GsonBuilder,區別于test1中的Gson gson = new Gson();Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation() //不導出實體中沒有用@Expose注解的屬性.enableComplexMapKeySerialization() //支持Map的key為復雜對象的形式.serializeNulls().setDateFormat("yyyy-MM-dd HH:mm:ss:SSS")//時間轉化為特定格式 .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)//會把字段首字母大寫,注:對于實體上使用了@SerializedName注解的不會生效..setPrettyPrinting() //對json結果格式化..setVersion(1.0) //有的字段不是一開始就有的,會隨著版本的升級添加進來,那么在進行序列化和返序列化的時候就會根據版本號來選擇是否要序列化.//@Since(版本號)能完美地實現這個功能.還的字段可能,隨著版本的升級而刪除,那么//@Until(版本號)也能實現這個功能,GsonBuilder.setVersion(double)方法需要調用. .create();Student student1 = new Student();student1.setId(1);student1.setName("李坤");student1.setBirthDay(new Date());// // System.out.println("----------簡單對象之間的轉化-------------");// 簡單的bean轉為jsonString s1 = gson.toJson(student1);System.out.println("簡單Bean轉化為Json===" + s1);// json轉為簡單BeanStudent student = gson.fromJson(s1, Student.class);System.out.println("Json轉為簡單Bean===" + student);// // Student student2 = new Student();student2.setId(2);student2.setName("曹貴生");student2.setBirthDay(new Date());Student student3 = new Student();student3.setId(3);student3.setName("柳波");student3.setBirthDay(new Date());List<Student> list = new ArrayList<Student>();list.add(student1);list.add(student2);list.add(student3);System.out.println("----------帶泛型的List之間的轉化-------------");// 帶泛型的list轉化為jsonString s2 = gson.toJson(list);System.out.println("帶泛型的list轉化為json==" + s2);// json轉為帶泛型的listList<Student> retList = gson.fromJson(s2,new TypeToken<List<Student>>() {}.getType());for (Student stu : retList) {System.out.println(stu);}} }?
輸出結果:
----------簡單對象之間的轉化------------- 簡單Bean轉化為Json==={"Name": "李坤","bir": "2012-06-22 21:26:40:592" } Json轉為簡單Bean===Student [birthDay=Fri Jun 22 21:26:40 CST 2012, id=0, name=李坤] ----------帶泛型的List之間的轉化------------- 帶泛型的list轉化為json==[{"Name": "李坤","bir": "2012-06-22 21:26:40:592"},{"Name": "曹貴生","bir": "2012-06-22 21:26:40:625"},{"Name": "柳波","bir": "2012-06-22 21:26:40:625"} ] Student [birthDay=Fri Jun 22 21:26:40 CST 2012, id=0, name=李坤] Student [birthDay=Fri Jun 22 21:26:40 CST 2012, id=0, name=曹貴生] Student [birthDay=Fri Jun 22 21:26:40 CST 2012, id=0, name=柳波]?
?
?
轉載于:https://www.cnblogs.com/cjt-java/archive/2012/12/14/2817582.html
總結
以上是生活随笔為你收集整理的GsonBuilder的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将一个string左移N位置
- 下一篇: 设计model层的理念和思路