使用 Kotlin 进行 Gson 注释

问题描述 投票:0回答:2

我有一个带有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()

但这行不通。策略函数似乎无法识别/无法读取注释。什么可能导致问题?

kotlin annotations gson
2个回答
0
投票

我花了一些时间才弄清楚这一点,因为我对 Java 和 Kotlin 都很陌生。看来,为了让您的注释类显示在 java 中,您必须向注释本身添加几个注释。例如:

@Retention(value = AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FIELD)
annotation class NoSerialize()

0
投票

尝试下一行: @kotlin.jvm.Transient

© www.soinside.com 2019 - 2024. All rights reserved.