日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GsonBuilder

發布時間:2025/6/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。