获取通用类型的Seq的Json格式

时间:2017-03-10 14:12:58

标签: json scala generics play-json

我有一个带有泛型类型的抽象类,它从其子类获取该泛型类型的Json格式。但是抽象类还需要该类型序列的Json格式。在Scala中是否有任何方法只根据这些事物的格式获得一系列事物的Json格式?

我正在使用Play Json框架。

这是一个不完全遵循我的案例的例子,但它提供了我想要达到的目标的良好指示:

$session_time

1 个答案:

答案 0 :(得分:0)

如果您只是尝试将香蕉序列化为JSON对象,那么您唯一需要做的就是定义Banana 隐式 json格式,其他格式(例如Seq格式) )内置在游戏中:

import play.api.libs.json.Json

case class Banana(color: String)
object Banana {
  implicit val jsonFormat = Json.writes[Banana]
}

object PlayJsonTest extends App {
  val bananas = Seq(Banana("yellow"), Banana("green"))
  println(Json.toJson(bananas)) // [{"color":"yellow"},{"color":"green"}]
}

这也适用于其他类型,因为Json#toJson方法定义如下:

// Give me an implicit `Writes[T]` and I know how to serialize it
def toJson[T](o: T)(implicit tjs: Writes[T]): JsValue = tjs.writes(o)

隐式使用默认值,其中包括大多数集合的格式。你可以找到它们here

我希望能帮助你。