如何为(反)序列化建模枚举类型的有限值集合?
如何为(反)序列化建模枚举类型的有限值集合?
我正在使用Spray-json 1.3.1。我有以下JSON消息:
{ "results": [{ ... NOT IMPORTANT PART HERE ... }], "status": "OK" }
显然,这可以通过
case class Message[T](results: List[T], status: String)
自定义协议反序列化为status
字符串字段
object MessageProtocol extends DefaultJsonProtocol { implicit def messageFormat[T: JsonFormat] = jsonFormat2(Message.apply[T]) }
由于status
字段可以是OK
,ZERO_RESULTS
,OVER_QUERY_LIMIT
中的一种,因此将此字段作为字符串是没有意义的。由于我来自Java背景,因此我尝试使用以下实现:
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]) }
解决这个问题的最佳实践/方法是什么?
admin 更改状态以发布 2023年5月21日