美文网首页
Gson的使用

Gson的使用

作者: SingleException | 来源:发表于2017-11-15 11:57 被阅读0次

测试的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。

相关文章

网友评论

      本文标题:Gson的使用

      本文链接:https://www.haomeiwen.com/subject/dpecvxtx.html