【发布时间】:2020-02-17 09:08:05
【问题描述】:
考虑以下 JSON
{
"a": "{\"b\": 12, \"c\": \"test\"}"
}
我想为这种序列化的 Json 定义一个泛型读取 Reads[Outer[T]]
import play.api.libs.json.{Json, Reads, __}
final case class Outer[T](inner: T)
final case class SpecializedInner(b: Int, c: String)
object SpecializedInner {
implicit val reads: Reads[SpecializedInner] = Json.reads[SpecializedInner]
}
object Outer {
implicit def reads[T](implicit readsT: Reads[T]): Reads[Outer[T]] = ???
}
我怎样才能实现我的目标?我尝试对字段“outer.a”进行平面映射字符串读取,但由于无法从经过验证的 JSON 中生成 Reads[T],因此卡住了
object Outer {
implicit def reads[T](implicit readsT: Reads[T]): Reads[Outer[T]] =
(__ \ "a").read[String].flatMap(x => Json.parse(x).validate[T])
}
【问题讨论】:
标签: json scala playframework play-json