gpt4 book ai didi

scala - 使用play-json库捕获Json异常

转载 作者:行者123 更新时间:2023-12-04 11:24:06 26 4
gpt4 key购买 nike

play-jsonJson.parse()方法可能会抛出JsonMappingException。它还可能会抛出JsonParseException。为了捕获这些异常,是否必须进入com.fasterxml.jackson

我从文档中了解到play-json是建立在Jerkson之上的,而Jerkson是Jackson的包装。

捕获由 Play 库而不是由其使用的程序包引发的异常似乎要明智得多,该异常感觉就像是通过抽象深入了解程序包。有没有更好的办法? play-json库是否应该包装这些错误以获得更好的抽象?

这个问题是针对Scala的。

最佳答案

我同意在parse上放上安全的Json可能会很好,但是它的主要重点是编码和解码,而不是序列化和反序列化(例如,如果查看其顶层ScalaDoc描述,您将看到以下内容:“帮助程序函数来处理JsValues”,而不是“处理JSON字符串”)。

通常,从StringJsValue的获取应该更接近程序的边界,并且如果您看一下Play中传入JSON的处理方式,您会发现这里有一些安全的选项(例如 request.body.asJson )。

Play可能会方便地包装Jackson异常以避免公开实现细节,但是您绝对不需要从任何意义上“深入” Jackson即可捕获这些异常,只需将对parse的调用包装在Try中:

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]])

等等。

关于scala - 使用play-json库捕获Json异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24688441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com