封送akka-http

时间:2018-08-13 07:41:37

标签: scala marshalling akka-http spray-json

class Converter extends 
RootJsonFormat[TypeToConvert]
{
def write(obj : TypeToConvert) : JsValue =
{
    obj match
    {
        case Https => JsString(Https.name)
        case Sms => JsString(Sms.name)
    }
}   
def read(jsValue : JsValue) : TypeToConvert =
{
    jsValue match
    {
        case JsString("HTTPS") => Https
        case JsString("SMS") => Sms
        case _ => throw 
  DeserializationException("Expected a TypeToConvert
    Type")
     }
  }
}

我已经编写了这样的转换器,并且在此我仅使用write方法。有没有一种方法可以只使用write方法来编写json格式器。我要删除读取方法。

1 个答案:

答案 0 :(得分:0)

trait RootJsonFormat[T] extends JsonFormat[T] with RootJsonReader[T] with RootJsonWriter[T]

如您所见,这就是扩展JsonFormat的RootJsonFormat的层次结构。使用RootJsonReader以及RootJsonWriter。如果您只想使用JsonWriter。然后使用RootJsonWriter扩展您的课程。

在这种情况下,您将RootJsonFormat与类一起使用,则必须使用define write和read方法。

class Converter extends 
RootJsonWriter[TypeToConvert]
{
def write(obj : TypeToConvert) : JsValue =
{
    obj match
    {
        case Https => JsString(Https.name)
        case Sms => JsString(Sms.name)
    }
}   
}