Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取泛型类型的Seq的Json格式_Json_Scala_Generics_Play Json - Fatal编程技术网

获取泛型类型的Seq的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

我有一个带有泛型类型的抽象类,它从其子类中获取该泛型类型的Json格式。但是抽象类还需要该类型序列的Json格式。Scala中是否有任何方法可以仅基于这些内容的格式获取一系列内容的Json格式

我正在使用Play Json框架

下面的示例并不完全符合我的情况,但很好地说明了我想要实现的目标:

  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会隐式地为您提供香蕉序列的格式。但是,这不适用于泛型类型的格式。