# @Expose 和 transient @Since @Until ExclusionStrategy 和 自定义注解 类属性的字段过滤 1、属性注解 @Expose 对应的链接 2、版本注解 @Since 和 @Until 对应的链接 3、修饰符 public、static 、final、private、protected 、transient 4、排除策略 基于策略是利用Gson提供的ExclusionStrategy接口,同样需要使用GsonBuilder, 相关API 2个,分别是 addSerializationExclusionStrategy() addDeserializationExclusionStrategy() 分别针对序列化和反序化时。 --> 需要实现implements ExclusionStrategy 接口 见下方自定义注解 5、自定义注解(基于排除策略)
3、对于修饰符的序列化
package sun.rain.amazing.gson.sumup; import lombok.Getter; import lombok.ToString; /** * 对于修饰符的测试 * @author sunRainAmazing */ @Getter @ToString public class GsonModifier { public static final String publicStaticFinal = "public static final"; public static String publicStatic = "public static"; final String finalField = "default final"; static String staticField = "default static"; public String publicField = "public"; protected String protectedField = "protected"; String defaultField = "default"; private String privateField = "private"; transient String transientField = "transient"; }
package sun.rain.amazing.gson.sumup; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.junit.Test; import java.lang.reflect.Modifier; /** * @author sunRainAmazing */ public class GsonModifierTest { Gson gson = new Gson(); /** * 对于 static 修饰和 transient 修饰的 都会默认不被序列化 * * {"finalField":"default final", * "publicField":"public", * "protectedField":"protected", * "defaultField":"default", * "privateField":"private" * } * * * new GsonBuilder().excludeFieldsWithModifiers() * 采用这种方式 -- 会使 static transient 失效,除非不排除 * {"publicField":"public", * "protectedField":"protected", * "defaultField":"default", * "transientField":"transient" * } */ @Test public void test(){ GsonModifier g = new GsonModifier(); System.out.println(gson.toJson(g)); Gson gson = new GsonBuilder() // 排除带有以下修饰符的 属性 -- 会 使 transient 失效 .excludeFieldsWithModifiers(Modifier.FINAL, Modifier.STATIC, Modifier.PRIVATE) .create(); System.out.println(gson.toJson(g)); } }
本文是Gson系列的总结篇,探讨了如何使用@Expose注解来控制字段的序列化与反序列化,以及如何处理transient关键字的影响。同时,介绍了版本注解@Since和@Until在序列化过程中的应用。此外,还讲解了如何通过ExclusionStrategy接口和自定义注解实现更灵活的数据处理。
2367

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



