当json元素不存在时,如何设置spray-json设置为null?

Che*_*rry 6 json scala spray spray-json

这是Spray-json 示例。这是NullOptions特性。

问题是当我声明一个案例类时说

object MyJsonProtocol extends DefaultJsonProtocol  {
  implicit val some: RootJsonFormat[Some] = jsonFormat2(Some)
}

case class Some (
                name:String,
                age:Int
                )
Run Code Online (Sandbox Code Playgroud)

并且 json 不包含字段,例如:

{
    "name":"John"
}
Run Code Online (Sandbox Code Playgroud)

我得到: java.util.NoSuchElementException: key not found: age

所以我必须添加一个Option和这样的NullOption特征:

object MyJsonProtocol extends DefaultJsonProtocol with NullOptions  {
  implicit val some: RootJsonFormat[Some] = jsonFormat2(Some)
}

case class Some (
                name:String,
                age:Option[Int]
                )
Run Code Online (Sandbox Code Playgroud)

一切正常。但我不想有一个所有成员都是Option. 有没有办法配置spray json解组来只设置空值而不需要额外的Option类型?

聚苯乙烯

我知道一般来说Option比空检查更好,但在我的情况下它只是猴子代码。

响应处理期间编组的完整示例也在这里

Gab*_*lla 1

看来你运气不好

从您链接的文档中:

Spray-json 将始终读取缺少的可选成员以及null可选成员None

你可以自定义json的写入,但不能自定义读取。