[英]Catching Json exceptions with play-json library
play-json
的Json.parse()
方法可能抛出JsonMappingException
。 它也可能抛出JsonParseException
。 为了捕获这些异常,是否必须进入com.fasterxml.jackson
?
我从文档中了解到,play-json建立在Jerkson之上,Jerkson是Jackson的包装器。
捕获一个由play库抛出的异常似乎更为理智,而不是通过它使用的一个包,它感觉就像通过抽象来深入了解。 有没有更好的办法? play-json库是否应该包装这些错误以获得更好的抽象?
这个问题适用于Scala。
我同意在Json
上有一个安全的parse
风格可能会很好,但它主要关注的是编码和解码,而不是序列化和反序列化(例如,如果你看一下它的顶级ScalaDoc描述,你会看到以下内容:“Helper函数处理JsValues”,而不是“处理JSON字符串”)。
一般来说,从String
到JsValue
应该更接近程序的边界,如果你看看如何在Play中处理传入的JSON,你会发现有安全的选项(例如request.body.asJson
)。
Play可以很方便地包装Jackson例外以避免泄露实现细节,但是你绝对不需要在任何意义上“触及”Jackson以捕获这些异常 - 只需将调用包装在Try
parse
:
import play.api.libs.json._
import scala.util.Try
val parsed: Try[JsValue] = Try(Json.parse("{ broken"))
要么:
val decoded: Option[Map[String, Int]] = Try(
Json.parse("""{ "foo": 1 }""")
).toOption.flatMap(_.asOpt[Map[String, Int]])
等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.