我有以下情况。
import shapeless.{:+:, CNil}
import julienrf.json.derived.{DerivedOWrites, DerivedReads, NameAdapter}
case class A(i : Int)
case class B(s : String)
object Event {
type AllEvent = A :+: B :+: CNil
implicit def allFormats[T](implicit dr: DerivedReads[T], dw: DerivedOWrites[T]): OFormat[T] = derived.oformat[T](NameAdapter.snakeCase)
}
case class C(id : String, event : Event.AllEvent)
并且我希望能够将以下json解析为C
import play.api.libs.json.{Json, OFormat}
import Event.allFormats
val json = Json.parse(
"""{
"id" : "id",
"event":{
"i" : 1
}
}"""
).as[C]
但是我遇到了错误
Error: No Json deserializer found for type C. Try to implement an implicit Reads or Format for this type.
).as[C]
解决A :+: B :+: CNil
的读操作似乎很困难。
无论我尝试什么,似乎都行不通。我是否缺少明显的东西?