Spray Json:将通用类型转换为 Json 格式
Spray Json: Convert a Generic type to JsonFormat
我有一个 class 类似于 Pairs
。
我有一个特性可以将 Pairs
class 格式转换为 Json 格式。
import scala.reflect.ClassTag
import spray.json._
import spray.json.DefaultJsonProtocol
case class Pairs[K, V](key:K, value: V)
trait Convertor[K, V] extends DefaultJsonProtocol{
implicit val convertor = jsonFormat2(Pairs[K, V])
}
val p = Pairs[String, Int]("One", 1)
println(p.toJson)
当我使用这个特性时,我得到了以下错误,需要一个 K
和 V
类型的转换器。
error: could not find implicit value for evidence parameter of type
Convertor.this.JF[K]
implicit val convertor = jsonFormat2(Pairs[K, V])
^
但是我怎样才能将通用数据类型引入范围。谁能帮帮我?
K
和 V
可以是一切 (Any
)。由于您没有所有 Convertor
,因此您必须限制 K
和 V
.
case class Pairs[K <: PairKey, V <: PairValue](key:K, value: V)
现在您需要为 PairKey
和 PairValue
及其所有子项提供转换器。
您可以在此处找到信息:spray-json#jsonprotocol
您需要为键类型和值类型提供 JsonFormat。
这个代码
import spray.json.DefaultJsonProtocol._
import spray.json._
case class Pairs[K, V](key: K, value: V)
implicit def pairsFormat[K: JsonFormat, V: JsonFormat] = jsonFormat2(Pairs.apply[K, V])
val p = Pairs[String, Int]("One", 1)
println(p.toJson)
将打印
{"key":"One","value":1}
我有一个 class 类似于 Pairs
。
我有一个特性可以将 Pairs
class 格式转换为 Json 格式。
import scala.reflect.ClassTag
import spray.json._
import spray.json.DefaultJsonProtocol
case class Pairs[K, V](key:K, value: V)
trait Convertor[K, V] extends DefaultJsonProtocol{
implicit val convertor = jsonFormat2(Pairs[K, V])
}
val p = Pairs[String, Int]("One", 1)
println(p.toJson)
当我使用这个特性时,我得到了以下错误,需要一个 K
和 V
类型的转换器。
error: could not find implicit value for evidence parameter of type Convertor.this.JF[K] implicit val convertor = jsonFormat2(Pairs[K, V]) ^
但是我怎样才能将通用数据类型引入范围。谁能帮帮我?
K
和 V
可以是一切 (Any
)。由于您没有所有 Convertor
,因此您必须限制 K
和 V
.
case class Pairs[K <: PairKey, V <: PairValue](key:K, value: V)
现在您需要为 PairKey
和 PairValue
及其所有子项提供转换器。
您可以在此处找到信息:spray-json#jsonprotocol
您需要为键类型和值类型提供 JsonFormat。
这个代码
import spray.json.DefaultJsonProtocol._
import spray.json._
case class Pairs[K, V](key: K, value: V)
implicit def pairsFormat[K: JsonFormat, V: JsonFormat] = jsonFormat2(Pairs.apply[K, V])
val p = Pairs[String, Int]("One", 1)
println(p.toJson)
将打印
{"key":"One","value":1}