Kotlin+SpringBoot项目中Gson自定义@Exclude注解不生效问题排查
问题分析与解决方案
针对你在Kotlin SpringBoot项目中使用Gson自定义@Exclude注解失效的问题,常见原因及对应解决方法如下:
1. 自定义注解未设置运行时保留策略
如果你的@Exclude注解没有指定@Retention(RetentionPolicy.RUNTIME),编译后注解信息会被直接丢弃,导致Gson在运行时无法读取到该注解。
解决方法:在自定义注解上添加运行时保留策略:
@Retention(RetentionPolicy.RUNTIME) annotation class Exclude
2. Kotlin注解目标未明确指向字段
Kotlin中直接在val/var属性上添加注解,默认会将注解绑定到属性的getter方法而非字段本身,而Gson的ExclusionStrategy是通过读取字段上的注解来判断是否跳过的。
解决方法:使用@field:限定符,明确将注解标注在字段上:
data class Order( val external: Boolean, val orderNumber: String, val companyName: String, @field:Exclude val vatCode: String, )
3. 确认Gson实例的使用正确性
确保你在序列化/反序列化操作时,确实使用了配置好排除策略的Gson实例,而非默认的Gson()实例。示例:
// 使用配置后的gson实例进行序列化 val order = Order(true, "ORD123", "Acme Corp", "VAT001") val json = gson.toJson(order) // 此时vatCode字段会被正确排除
内容的提问来源于stack exchange,提问作者SamuelS
相关产品推荐
相关产品推荐

