1

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

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
}
4

0 回答 0