即使我已经创建了 JsonProtocol,编译器也找不到隐式值

问题描述

所以我有这个简单的 post 端点,应该在那里进行一些解组

post {
      path("/emails") {
        import package.model.impl.RegularEmailJsonSupport._
        entity(as[RegularEmail]) { regularEmail =>
          storeInboundEmails(regularEmail).runDB.attempt.unsafeRunSync()
     }
}

这是与 json 协议格式一起的模型类,我不太相信它对 EmailStatus 字段是否正确

case class RegularEmail(
    id: BigInt,timestamp: DateTime,senderEmailAddress: String,originalRecipientsAddresses: List[String],cc: List[String],subject: String,content: JsValue,customerNumber: Int,status: EmailStatus = EmailStatus.UNREAD,originalSenderEmailAddress: String,hasAttachments: Boolean = false
//Metadata: Option[EmailMetadata]
) extends Email(
  id = id,timestamp = timestamp,senderEmailAddress = senderEmailAddress,originalRecipientsAddresses = originalRecipientsAddresses,cc = cc,subject = subject,content = content,status = status,hasAttachments = hasAttachments,sourceType = EmailSourceType.REGULAR //,//Metadata = Metadata
) {
}

object RegularEmailJsonSupport extends DefaultJsonProtocol with SprayJsonSupport {
  implicit val eventDataFormat = jsonFormat1(DateTime.apply)
  implicit val statusFormat = jsonFormat1(EmailStatus.apply)
  implicit val EmailFormat = jsonFormat11(RegularEmail.apply)
}

这些是我得到的错误

Could not find implicit value for parameter um: akka.http.scaladsl.unmarshalling.FromrequestUnmarshaller


Could not find implicit value for evidence parameter of type RegularEmailJsonSupport.JF[P1] (Cannot find JsonWriter or JsonFormat type class for P1)
[error]   implicit val statusFormat = jsonFormat1(EmailStatus.apply)

我也看到编译器没有抱怨 DateTime 的 jsonFormat,所以这个问题是由 EmailStatus 引起的吗?

EmailStatus 是Email 抽象类中的一个对象,它被RegularEmail 继承,如下所示:

object EmailStatus extends Enumeration {
  type EmailStatus = Value
  val READ,UNREAD,CLOSED = Value
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...