json4s 无法使用 mixin 特征序列化案例类

标签 json scala mixins traits json4s

为什么这不起作用?

object JsonExample extends App {
  import org.json4s._
  import org.json4s.native.Serialization
  import org.json4s.native.Serialization.{read, write}
  implicit val formats = Serialization.formats(NoTypeHints)

  case class Winner(id: Long, numbers: List[Int])    

  trait Greet { val greeting = "hi"}
  val obj = new Winner(1, List(1,2)) with Greet
  println(write(obj))
}

这会打印一个空的 JSON 对象

{}

如果我删除“with Greet”,我会得到(正确的)结果:

{"id":1,"numbers":[1,2]}

最佳答案

看起来如果您对格式更具体,您就可以获得您想要的结果:

import org.json4s.{FieldSerializer, DefaultFormats}
import org.json4s.native.Serialization.write

case class Winner(id: Long, numbers: List[Int])
trait Greet { val greeting = "hi"}

implicit val formats = DefaultFormats + FieldSerializer[Winner with Greet]()

val obj = new Winner(1, List(1,2)) with Greet

//returns {"greeting":"hi","id":1,"numbers":[1,2]}
write(obj)

关于json4s 无法使用 mixin 特征序列化案例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26179087/

相关文章:

arrays - Ruby:根据条件从深层嵌套的 JSON 结构中提取元素

scala - 在 Play 中启动 Akka Actor

scala - Scala 中的 val-mutable 与 var-immutable

json - Pug - 与条件 .json 对象混合

javascript - 基于 json 到数组数组的日期的平均值

java - 复杂的json解析未找到java异常

scala - 如何在常见的sbt项目中下载sbt插件源jar?

ruby-on-rails - 使用基类与基模块重构 ActiveRecord 模型

javascript - 如何在 Javascript 中正确使用 mixins

php - 用于不返回预期数据的视频的 Facebook 图形 API