1
case class HydraQueueMessage(tableType: HydraTableName.Value, payload: String)
object MedusaElementFormat extends DefaultJsonProtocol {
implicit object HydraElementFormat extends RootJsonFormat[HydraQueueMessage] {
def write(message: HydraQueueMessage) = JsObject(
MedusaEnum.HydraTableName.toString -> JsString(message.tableType.toString),
"payload" -> JsString(message.payload)
)
def read(value: JsValue) = {
value.asJsObject.getFields("tableType", "payload") match {
case Seq(JsString(tableType), JsString(payload)) =>
new HydraQueueMessage(tableType = tableType, payload = payload)
}
}
}
}
在这个例子中有一个类型错过匹配,是否有一个更清晰的方式来实现这一点?并且仍然将tableType
作为Value而不是String?自定义喷雾JSON编组与案例类价值类型
我的编组器会抛出一个与值类型不匹配的类型,我也无法编写JsValue。那么,如何在不使用字符串类型tableType
的情况下编码HydraQueueMessage
案例类?