akka-http。表示选项值
akka-http. Represent Option values
默认情况下,akka-http 将json(即{"some_key":""}
)中的空字符串反序列化为Some("")
。
如何让akka-http反序列化App所有机型所有Option[String]
类型的空字符串为None
?
Akka-http
默认使用 spray-json
,因此您需要做的就是通过提供自定义行为来覆盖默认行为。获得所需内容的一种简单方法是:(在所有模型上混合此特征)
trait CustomJsonMarshalling {
implicit object OptionFormat extends JsonFormat[Option[String]] {
def write(str: Option[String]) = JsString(str.getOrElse(""))
def read(str: JsValue) = {
str match {
case JsString(s) => if (s.isEmpty) None else Some(s)
case _ => throw new DeserializationException("Expected non empty string")
}
}
}
}
默认情况下,akka-http 将json(即{"some_key":""}
)中的空字符串反序列化为Some("")
。
如何让akka-http反序列化App所有机型所有Option[String]
类型的空字符串为None
?
Akka-http
默认使用 spray-json
,因此您需要做的就是通过提供自定义行为来覆盖默认行为。获得所需内容的一种简单方法是:(在所有模型上混合此特征)
trait CustomJsonMarshalling {
implicit object OptionFormat extends JsonFormat[Option[String]] {
def write(str: Option[String]) = JsString(str.getOrElse(""))
def read(str: JsValue) = {
str match {
case JsString(s) => if (s.isEmpty) None else Some(s)
case _ => throw new DeserializationException("Expected non empty string")
}
}
}
}