1、简述
[@Expose -- GsonBuilder] 用于类属性 是否 序列化和反序列化 Expose: serialize 为 false 代表不进行序列化 deserialize 为false 代表 不进行反序列化 由于序列化时 排除某些 属性 * 注意 1. 需要建立在 GsonBuilder下才会起作用 gson = new GsonBuilder() // 排除@Expose值为false的属性 .excludeFieldsWithoutExposeAnnotation() .create(); 2. 未使用@Expose修饰的属性 在反序列化时 会被忽视 具有一定的缺陷性 后面系列文章 ExclusionStrategy 中,会自定义相关的排除的注解, 来更方便的实现属性的不序列化。
2、实体类
package sun.rain.amazing.gson.anno; import com.google.gson.annotations.Expose; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * Expose: * serialize 为 false 代表不进行序列化 * deserialize 为false 代表 不进行反序列化 * * 由于序列化时 排除某些 属性 * * 需要建立在 GsonBuilder下才会起作用 * 注意 在 未使用@Expose在反序列化时 会被忽视 * 具有一定的缺陷性 * * @author sunRainAmazing */ @Data @NoArgsConstructor @AllArgsConstructor public class ExposeGson { private String name; @Expose private String nickName; @Expose(serialize = false) private String email; @Expose(deserialize = false) private String mobile; @Expose(serialize = false, deserialize = false) private String info; }
3、测试类
package sun.rain.amazing.gson.anno; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.junit.Test; /** * @author sunRainAmazing */ public class ExposeGsonTest { private Gson gson = new Gson(); /** * {"name":"A","nickName":"B","email":"b@b.com","mobile":"12035","info":"desc more"} * ExposeGson(name=A, nickName=B, email=b@b.com, mobile=12035, info=desc more) * * {"nickName":"B","mobile":"12035"} * ExposeGson(name=null, nickName=B, email=null, mobile=null, info=null) * * 注意 没有使用 @Expose 注解的将不会被序列化 */ @Test public void testExpose(){ ExposeGson e = new ExposeGson("A","B","b@b.com", "12035","desc more"); // json 序列化 String json = gson.toJson(e); System.out.println(json); // json 反序列化 ExposeGson u = gson.fromJson(json,ExposeGson.class); System.out.println(u); gson = new GsonBuilder() // 排除@Expose值为false的属性 .excludeFieldsWithoutExposeAnnotation() .create(); json = gson.toJson(e); System.out.println(json); // json 反序列化 u = gson.fromJson(json,ExposeGson.class); System.out.println(u); } }
本文主要介绍了Gson库中的@Expose注解,用于在序列化和反序列化过程中控制字段的可见性。通过实例展示了如何在实体类中使用@Expose注解来过滤序列化和反序列化的字段。
909

被折叠的 条评论
为什么被折叠?



