我正在使用 Spray-json 1.3.1。我有以下 JSON 消息:
{
"results": [{
... NOT IMPORTANT PART HERE ...
}],
"status": "OK"
}
简单地说,这可以通过反序列化为status
字符串字段
case class Message[T](results: List[T], status: String)
使用自定义协议
object MessageProtocol extends DefaultJsonProtocol {
implicit def messageFormat[T: JsonFormat] = jsonFormat2(Message.apply[T])
}
由于status
field 可以是 , 之一,OK
因此将此字段作为 String 是没有意义的。由于我来自 Java 背景,因此我尝试了 Scala 中的枚举实现如下:ZERO_RESULTS
OVER_QUERY_LIMIT
case class Message[T](results: List[T], status: Status)
object Status extends Enumeration{
type Status = Value
val OK,ZERO_RESULTS,OVER_QUERY_LIMIT, REQUEST_DENIED, INVALID_REQUEST,UNKNOWN_ERROR = Value
}
object MessageProtocol extends DefaultJsonProtocol {
implicit val statusFormat = jsonFormat(Status)
implicit def messageFormat[T: JsonFormat] = jsonFormat2(Message.apply[T])
}
解决此问题的最佳实践/方法是什么?