測(cè)試的pojo
public class User{
public String name;
public int age;
public Date date;
}
需求
1.當(dāng)pojo類中有int類型庄敛,但是前端獲得的json數(shù)據(jù)為age為空的情況下
String json="{\"name\":\"zhangsan\",\"age\":\"\"}";
Gson gson=new GsonBuilder().registerTypeAdapter(int.class, new JsonDeserializer<Integer>() {
public Integer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
try {
return json.getAsInt();
} catch (Exception e) {
return 0;
}
}
}).create();
User user=gson.fromJson(json, User.class);
System.out.println(user.age);
2.序列化時(shí)為null值的輸出
User user=new User("zhangsan",60);
Gson gson=new GsonBuilder.serializeNulls().create();
System.out.println(json.toJson(user));
3.有時(shí)間參數(shù)序列化時(shí)格式化輸出
User user=new User();
user.date=new Date();
Gson gson=new GsonBuilder.setDateFormat("yyyy-MM-dd").create();
System.out.println(gson.toJson(user));
4.注解@SerializedName
為user類中的age添加
@SerializedName ("myAge")
public int age;
之后輸出Json數(shù)據(jù)
User user=new User();
user.age=10;
Gson gson=new Gson();
System.out.println(gson.toJson(user));
5.jsonBuilder配合@Expose,pojo添加這個(gè)標(biāo)簽標(biāo)示支持序列化和反序列化
User user=new User("zhangsan", 20);
user.date=new Date();
Gson gson=new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
System.out.println(gson.toJson(user));
pojo類中為
@Expose public String name
觀察結(jié)果發(fā)現(xiàn)只輸出了name:zhangsan圃庭。