【发布时间】:2014-08-18 00:29:20
【问题描述】:
假设我有一个枚举或密封的案例对象组,如下所示:
sealed abstract class Status
case object Complete extends Status
case object Failed extends Status
case object Pending extends Status
case object Unknown extends Status
或
object Status extends Enumeration {
val Complete, Failed, Pending, Unknown = Value
}
为这些创建 json 格式的最简单方法是什么,以便我可以非常轻松地(以编程方式)生成 json 格式以用于自定义 JsonFormat 工厂方法,如下所示,适用于所有普通案例类,字符串、集合等,但为上述两种枚举类型产生{}或{"name": null}?:
import org.json4s.DefaultFormats
import org.json4s.jackson.JsonMethods.parse
import org.json4s.jackson.Serialization
import org.json4s.jvalue2extractable
import org.json4s.string2JsonInput
trait JsonFormat[T] {
def read(json: String): T
def write(t: T): String
}
object JsonFormat {
implicit lazy val formats = DefaultFormats
def create[T <: AnyRef: Manifest](): JsonFormat[T] = new JsonFormat[T] {
def read(json: String): T = parse(json).extract[T]
def write(t: T): String = Serialization.write(t)
}
}
【问题讨论】: