我有一个带有Kotlin的SpringBoot项目,我正在使用Gson来读写Json。我正在尝试通过自定义注释来注释 Json 之外的一些字段:
data class Order(
val external: Boolean,
val orderNumber: String,
val companyName: String,
@Exclude val vatCode: String,
)
我是这样定义策略的:
private final var strategy: ExclusionStrategy = object : ExclusionStrategy {
override fun shouldSkipClass(clazz: Class<*>?): Boolean {
return false
}
override fun shouldSkipField(field: FieldAttributes): Boolean {
return field.getAnnotation(Exclude::class.java) != null
}
}
并在这里实现它:
val gson = GsonBuilder().setExclusionStrategies(strategy).create()
但这行不通。策略函数似乎无法识别/无法读取注释。什么可能导致问题?
我花了一些时间才弄清楚这一点,因为我对 Java 和 Kotlin 都很陌生。看来,为了让您的注释类显示在 java 中,您必须向注释本身添加几个注释。例如:
@Retention(value = AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FIELD)
annotation class NoSerialize()
尝试下一行: @kotlin.jvm.Transient