Gson的使用

2017-11-15  本文已影响0人  SingleException

测试的pojo

public class User{
public String name;
public int age;
public Date date;
}

需求

1.当pojo类中有int类型,但是前端获得的json数据为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.序列化时为null值的输出

User user=new User("zhangsan",60);
Gson gson=new GsonBuilder.serializeNulls().create();
System.out.println(json.toJson(user));

3.有时间参数序列化时格式化输出

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数据

User user=new User();
user.age=10;
Gson gson=new Gson();
System.out.println(gson.toJson(user));

5.jsonBuilder配合@Expose,pojo添加这个标签标示支持序列化和反序列化

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

观察结果发现只输出了name:zhangsan。

上一篇 下一篇

猜你喜欢

热点阅读