use*_*654 7 scala playframework
play-json的Json.parse()方法可能会抛出一个JsonMappingException.它也可能会抛出一个JsonParseException.为了捕捉这些例外,是否必须达成com.fasterxml.jackson?
我从文档中了解到,play-json建立在Jerkson之上,Jerkson是Jackson的包装器.
捕获一个由play库抛出的异常似乎更为理智,而不是通过它使用的一个包,它感觉就像通过抽象来深入了解.有没有更好的办法?play-json库是否应该包装这些错误以获得更好的抽象?
这个问题适用于Scala.
我同意parse开启一个安全的味道可能会很好Json,但它的主要焦点是编码和解码,而不是序列化和反序列化(例如,如果你看一下它的顶级ScalaDoc描述,你会看到以下内容:"Helper函数来处理JsValues",而不是"处理JSON字符串").
一般来说,从a String到a JsValue应该更接近程序的边界,如果你看看如何在Play中处理传入的JSON,你会发现有安全的选项(例如request.body.asJson).
为了避免暴露实现细节,Play也可能很方便包装杰克逊例外,但你绝对不需要在任何意义上"触及"杰克逊以捕获这些异常 - 只需将调用包含parse在Try:
import play.api.libs.json._
import scala.util.Try
val parsed: Try[JsValue] = Try(Json.parse("{ broken"))
Run Code Online (Sandbox Code Playgroud)
要么:
val decoded: Option[Map[String, Int]] = Try(
Json.parse("""{ "foo": 1 }""")
).toOption.flatMap(_.asOpt[Map[String, Int]])
Run Code Online (Sandbox Code Playgroud)
等等.
| 归档时间: |
|
| 查看次数: |
3860 次 |
| 最近记录: |