为什么带有枚举的对象的 Gson().toJson() 抛出 StackOverflowError?

Why does Gson().toJson() of object with Enumeration throw StackOverflowError?

import Tenum.Tenum
import com.google.gson.Gson

object Temp extends App {

  val gson = new Gson()
  gson.toJson(new Status("foo", Tenum.X))

  System.exit(1)
}

case class Status(id: String, tenum: Tenum)

object Tenum extends Enumeration {

  type Tenum = Value

  val X = Value
}

我以为它只会打印:

{id:"foo", tenum:"X"}

可能是因为 Scala Enumeration 上有一个字段是自引用的,而 Gson 试图序列化它,陷入死循环。

我会尝试序列化 Tenum.X.toString(或在您的枚举上提供一个 json 字段)或四处寻找 Scala Gson 包装器。