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

标签 scala 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

关于scala - 反序列化选项返回 None 而不是 json4s 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60401341/

相关文章:

scala - 这两种方法定义有什么区别?

scala - 使用 sbt 编译 Java 注释

java - 解析具有多个字段的 json 对象

json - 使用JSON4S在Scala中对案例对象进行反序列化

json4s - json4s中是否有针对UUID的开箱即用的(反)序列化器?

json - 使用json4s将json中的字符串解析为java.time.LocalTime

scala - 括号平衡算法递归

scala - 一般获取 Scala 类型的 list

android - 运行错误 'sbt start-device'

java - 如何在json中指定特定的对象路径