2
Spray-json 1.3.1을 사용하고 있습니다.(de) 직렬화를 위해 enum-like 유형의 값의 유한 집합을 모델화하는 방법은 무엇입니까?
{
"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
중 하나가 될 수 있습니다 나는 다음과 같은 JSON 메시지가 , 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])
}
는이 문제를 해결하는 가장 좋은 방법/방법은 무엇입니까 : 나는 자바 배경에서 오는 이대로 다음과 같이 스칼라에서 열거 구현하려고?
Akka-Http를 살펴 보겠습니다. 되었다. 그들은 싱글 톤 객체와 상속을 사용하여 이것을 해결했습니다. -> http://doc.akka.io/api/akka-stream-and-http-experimental/1.0-M2/#akka.http.model.StatusCodes$ –
또한 고려하십시오. 대/소문자 개체 (Daniel Sobral의 스레드 http://stackoverflow.com/questions/1321745/scala-doesnt-have-enums-what-to-use-instead-of-an-enum, 응답 방식) parser/serializer 라이브러리에 따라 모든 것을 파괴하는 dodgy serialization/deserialization 문제 ("status": : "name": "OK"} " –