Scala 编译错误 - 找不到类型证据参数的隐式值
Scala compile error - could not find implicit value for evidence parameter of type
我正在为以下案例使用喷雾 json 序列化 class
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,一切都可以正常编译。如何在没有任何编译问题的情况下添加这个额外的参数?
编译器找不到 SpanMetadata
的隐式 JsonFormat
。尝试:
...
object ActivationMessage extends DefaultJsonProtocol {
...
private implicit val spanMetaSerdes = jsonFormat4(SpanMetadata.apply)
implicit val serdes = jsonFormat9(ActivationMessage.apply)
}
我正在为以下案例使用喷雾 json 序列化 class
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,一切都可以正常编译。如何在没有任何编译问题的情况下添加这个额外的参数?
编译器找不到 SpanMetadata
的隐式 JsonFormat
。尝试:
...
object ActivationMessage extends DefaultJsonProtocol {
...
private implicit val spanMetaSerdes = jsonFormat4(SpanMetadata.apply)
implicit val serdes = jsonFormat9(ActivationMessage.apply)
}