阿卡-HTTP。表示选项值

时间:2017-12-06 09:01:33

标签: scala deserialization akka-http

默认情况下,akka-http将json({"some_key":""} )中的空字符串反序列化为Some("")

如何让应用的所有模型中的所有Option[String]类型中的空字符串akka-http反序列化为None

1 个答案:

答案 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")
      }
    }
  }
}