【发布时间】:2020-06-09 14:00:47
【问题描述】:
运行以下代码时,我预计会出现异常,但我得到的是None。这是预期的吗?
import org.json4s.jackson.JsonMethods
import org.json4s.{DefaultFormats, Formats}
implicit val f: Formats = DefaultFormats
val json ="{ \"a\" : { \"c\": 1 }}"
case class Foo(a: Option[String])
val foo = JsonMethods.parse(json).extract[Foo]
println(foo)
> Foo(None)
还有那个代码:
import org.json4s.jackson.JsonMethods
import org.json4s.{DefaultFormats, Formats}
implicit val f: Formats = DefaultFormats
val json ="{ \"a\" : { \"c\": 1 }}"
case class Foo(a: String = "")
val foo = JsonMethods.parse(json).extract[Foo]
println(foo)
> Foo()
【问题讨论】:
-
好吧,我认为 Option 的想法是它不应该失败。如果它无法将
a读取为String,那么它将返回None。 -
Option表示它是可选的,不是错误的类型。 -
嗯,你说得对。这取决于您希望它有多严格。大概有办法配置吧。
-
注意:Json4s 是 vulnerable under DoS/DoW attacks!