Deserializing Option返回None,而不是json4s中的异常

问题描述 投票:2回答:1

运行以下代码时,我会期望出现异常,但是我得到的是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()
scala json4s
1个回答
1
投票

您可以通过更改默认格式来强制执行严格选项解析

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
© www.soinside.com 2019 - 2024. All rights reserved.