gpt4 book ai didi

jackson - 如何在 Kotlin 中使用 Jackson JsonSubTypes 注解

转载 作者:IT老高 更新时间:2023-10-28 13:31:36 26 4
gpt4 key购买 nike

我正在尝试转换一些使用 Jackson 的 @JsonSubTypes 注释来管理多态性的 Java 代码。

这里是有效的 Java 代码:

@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = Comment.class, name = "CommentNote"),
@JsonSubTypes.Type(value = Photo.class, name = "PhotoNote"),
@JsonSubTypes.Type(value = Document.class, name = "DocumentNote")
})
public abstract class Note implements Identifiable {
[...]

这是我认为等效的 Kotlin 代码:

JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
JsonSubTypes(
JsonSubTypes.Type(value = javaClass<Comment>(), name = "CommentNote"),
JsonSubTypes.Type(value = javaClass<Photo>(), name = "PhotoNote"),
JsonSubTypes.Type(value = javaClass<Document>(), name = "DocumentNote")
)
abstract class Note : Identifiable {
[...]

但我在三个“JsonSubTypes.Type”行中的每一行都收到以下错误:

Kotlin: An annotation parameter must be a compile-time constant
Kotlin: Annotation class cannot be instantiated

有什么想法吗?

最佳答案

我相信这已经解决了,现在你可以这样写:

import com.fasterxml.jackson.annotation.JsonSubTypes
import com.fasterxml.jackson.annotation.JsonTypeInfo

@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes(
JsonSubTypes.Type(value = Comment::class, name = "CommentNote"),
JsonSubTypes.Type(value = Photo::class, name = "PhotoNote"),
JsonSubTypes.Type(value = Document::class, name = "DocumentNote"))
interface Note

注意 JsonSubTypes.Type 中的缺少的@类表示法

关于jackson - 如何在 Kotlin 中使用 Jackson JsonSubTypes 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26605575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com