为什么带有Enumeration的对象的Gson()。toJson()会抛出StackOverflowError?

时间:2015-08-11 14:56:50

标签: scala gson enumeration

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"}

1 个答案:

答案 0 :(得分:2)

可能是因为Scala Enumeration上有一个字段,它是自引用的,Gson正在尝试序列化它,陷入无限循环。

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