Gsonの例2-Gson注記とGsonBuilder

4002 ワード

エンティティのすべての属性をエクスポートする必要はなく、一部の属性をJsonにエクスポートしたい場合があります.
バージョンのアップグレードに伴ってエンティティクラスが変更される場合があります.
出力のjsonをデフォルトでフォーマットしたい場合があります.
... ...
次の例を見てください.
エンティティークラス:

import java.util.Date;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Student {
 private int id;
 @Expose
 private 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;
 }
 @Override
 public 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  json
 String s1 = gson.toJson(student1);
 System.out.println("  Bean   Json===" + s1);
 // json    Bean
 Student 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   json
 String s2 = gson.toJson(list);
 System.out.println("    list   json==" + s2);
 // json      list
 List<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=  ]