默认情况下,akka-http将json(即{"some_key":""}
)中的空字符串反序列化为Some("")
。
如何让应用的所有模型中的所有Option[String]
类型中的空字符串akka-http反序列化为None
?
答案 0 :(得分:2)
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")
}
}
}
}