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