反序列化选项返回None,而不是json4s中的异常



运行以下代码时,我希望出现异常,但我得到的却是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()

您可以通过更改默认格式来强制执行严格的选项解析,如下所示:

implicit val f: Formats = DefaultFormats.withStrictOptionParsing

潜在的异常:

[error] (run-main-2) org.json4s.package$MappingException: No usable value for a
[error] Do not know how to convert JObject(List((c,JInt(1)))) into class java.lang.String

最新更新