簡體   English   中英

Scala編譯錯誤-找不到類型為證據的隱式值

[英]Scala compile error - could not find implicit value for evidence parameter of type

我在以下案例類中使用Spray json序列化

case class ActivationMessage(override val transid: TransactionId,
                             action: FullyQualifiedEntityName,
                             revision: DocRevision,
                             user: Identity,
                             activationId: ActivationId,
                             activationNamespace: EntityPath,
                             content: Option[JsObject],
                             cause: Option[ActivationId] = None,
                             traceMetadata: Option[SpanMetadata] = None
                            ) extends Message {

  def meta = JsObject("meta" -> {
    cause map {
      c => JsObject(c.toJsObject.fields ++  activationId.toJsObject.fields)
    } getOrElse {
      activationId.toJsObject
    }
  })

  override def serialize = ActivationMessage.serdes.write(this).compactPrint

  override def toString = {
    val value = (content getOrElse JsObject()).compactPrint
    s"$action?message=$value"
  }

  def causedBySequence: Boolean = cause.isDefined
}

object ActivationMessage extends DefaultJsonProtocol {
  def parse(msg: String) = Try(serdes.read(msg.parseJson))
  private implicit val fqnSerdes = FullyQualifiedEntityName.serdes
  implicit val serdes = jsonFormat9(ActivationMessage.apply)
}

我收到編譯錯誤提示-找不到類型為ActivationMessage.JF[Option[com.github.levkhomich.akka.tracing.SpanMetadata]]證據參數的隱含值

如果我從構造函數中刪除最后一個參數,並使用jsonFormat8,那么一切都會編譯正常。 如何在沒有任何編譯問題的情況下添加此額外參數?

編譯器找不到JsonFormat的隱式SpanMetadata 嘗試:

...
object ActivationMessage extends DefaultJsonProtocol {
  ...
  private implicit val spanMetaSerdes = jsonFormat4(SpanMetadata.apply)
  implicit val serdes = jsonFormat9(ActivationMessage.apply)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM