为什么@SerializedName 在使用 Scala 时不序列化字段(没有注释也能正常工作)

Why is @SerializedName not serializing fields when using Scala (works fine without annotation)

我有以下代码

case class BaseObject(
    ...
    dnsRecord: Array[DNSEntry],
    @SerializedName("dnsRecord") dnsEntries: Array[DNSEntry]
)

当我 运行 序列化时,dnsRecord 工作正常,而 dnsEntries 为空...

更新

@fluffy 让我想起了 another question 之前看过所以我改成

case class BaseObject(
    ...
    dnsRecord: Array[DNSEntry],
    @(SerializedName@scala.annotation.meta.field)("dnsRecord") dnsEntries: Array[DNSEntry]
)

这引发了一个问题,因为它试图使用已被使用的 dnsRecord 字段。

答案看起来像这样...

case class BaseObject(
    ...
    @(SerializedName@scala.annotation.meta.field)("dnsRecord") dnsEntries: Array[DNSEntry]
)

甚至更好

object GsonScala {
  type SerializedName = com.google.gson.annotations.SerializedName @scala.annotation.meta.field
}
case class BaseObject(
    ...
    @GsonScala.SerializedName("dnsRecord") dnsEntries: Array[DNSEntry]
)