之前用Gson一直是用的Gson gson=new Gson;这种.
今天有个保存json数据到文件中的需求,类中有很多字段需要忽略,了解到可以在成员变量上添加@Expose
来实现,@Expose(serialize = true,deserialize = true)
这里有两个参数,默认都是true,表示序列化与反序列化时需不需要忽略此字段.
而且如果需要这个注解生效的话,不能使用new Gson();这种方式来创建,需要:
GsonBuilder builder = new GsonBuilder();
builder.excludeFieldsWithoutExposeAnnotation();
builder.setDateFormat("yyyy-MM-dd HH:mm:ss");
Gson gson = builder.create();
但是我在需要忽略序列化的字段上加了@Expose(serialize = false,deserialize = false)
之后,发现类转json时候其他字段都没了,对象序列化之后字符串成{}了.
后来我发现,如果使用了这个注解,那么其他需要进行序列化的字段上,必须都加上@Expose
注解,要不就会忽略.如果两个类嵌套,上级类中加了这个注解,那么下级类的字段里也要加上这个注解,要不就会被忽略…算是踩了个坑吧.
然后builder.setDateFormat("yyyy-MM-dd HH:mm:ss");
这个就是设置日期格式的,设置之后就会按照这种格式对所有Date类的字段用这种格式序列化.