找不到副产品的隐式读取

时间:2019-02-07 16:56:12

标签: json scala shapeless play-json

我有以下情况。

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的读操作似乎很困难。

无论我尝试什么,似乎都行不通。我是否缺少明显的东西?

0 个答案:

没有答案