获取泛型类型的Seq的Json格式
我有一个带有泛型类型的抽象类,它从其子类中获取该泛型类型的Json格式。但是抽象类还需要该类型序列的Json格式。Scala中是否有任何方法可以仅基于这些内容的格式获取一系列内容的Json格式 我正在使用Play Json框架 下面的示例并不完全符合我的情况,但很好地说明了我想要实现的目标:获取泛型类型的Seq的Json格式,json,scala,generics,play-json,Json,Scala,Generics,Play Json,我有一个带有泛型类型的抽象类,它从其子类中获取该泛型类型的Json格式。但是抽象类还需要该类型序列的Json格式。Scala中是否有任何方法可以仅基于这些内容的格式获取一系列内容的Json格式 我正在使用Play Json框架 下面的示例并不完全符合我的情况,但很好地说明了我想要实现的目标: package scalatest import scala.concurrent.Future import scala.concurrent.ExecutionContext.Implic
package scalatest
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Await
import scala.concurrent.duration.Duration
import java.util.UUID
import scala.util.control.NonFatal
import play.api.libs.json.Format
import play.api.libs.json.Json
object Banana {
def main(args: Array[String]): Unit = {
val f: Format[Seq[Banana]] = getSeqFormat(Json.format[Banana])
}
def getSeqFormat[T](format: Format[T]): Format[Seq[T]] = {
??? // TODO implement
}
}
case class Banana(color: String)
如果您只是尝试将香蕉序列化为JSON对象,那么您唯一需要做的就是定义
Banana
隐式JSON格式,其他格式(例如Seq格式)是内置的:
import play.api.libs.json.json
案例类香蕉(颜色:字符串)
对象香蕉{
隐式val jsonFormat=Json.writes[Banana]
}
对象PlayJsonTest扩展应用程序{
val香蕉=序号(香蕉(“黄色”)、香蕉(“绿色”))
println(Json.toJson(香蕉))/[{“颜色”:“黄色”},{“颜色”:“绿色”}]
}
这也适用于其他类型,因为Json#toJson
方法定义如下:
//给我一个隐式的`Writes[T]`我知道如何序列化它
def-toJson[T](o:T)(隐式tjs:Writes[T]):JsValue=tjs.Writes(o)
默认值是隐式使用的,其中包括大多数集合的格式。你可以找到他们
我希望这对您有所帮助。谢谢您的回答,但这对我的问题不起作用。如果您有香蕉的格式,Play会隐式地为您提供香蕉序列的格式。但是,这不适用于泛型类型的格式。