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
案例類?