Gsonの例2-Gson注記とGsonBuilder
4002 ワード
エンティティのすべての属性をエクスポートする必要はなく、一部の属性をJsonにエクスポートしたい場合があります.
バージョンのアップグレードに伴ってエンティティクラスが変更される場合があります.
出力の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= ]