如何解决Scala问题?
我的项目中使用 JSON 时收到警告:
json 包中的对象 JSON 已弃用。该对象将被删除。
import scala.util.parsing.json._
JSON.parseRaw("[{'a':'b'},{'c':'d'}]")
通常,这意味着一项功能已被另一种实现所取代,而另一种实现的使用优于旧的实现,而像这样的问题只是意味着 OP 懒得去谷歌搜索文档。对于 Java 语言中的库来说尤其如此,它非常重视向后兼容性(以至于对于某些人来说这变得很痛苦)。 Scala 生态系统在这方面并不那么严格,升级到该语言的新版本意味着您可以获得不同的 API,甚至二进制不兼容 http://tech.kinja.com/martin-odersky-on-the-future-of-binary-compatibility-in-1668670136。也可以看看Scala:版本之间的二进制不兼容 https://stackoverflow.com/questions/2053265/scala-binary-incompatibility-between-releases。这并不是针对 Scala 的评论。这些不兼容性的存在是有充分理由的。
然而,我必须承认,的文档scala.util.parsing.json http://www.scala-lang.org/api/2.11.1/scala-parser-combinators/index.html#scala.util.parsing.json.package不包含任何有关建议替换此功能的信息。我花了相当长的时间才找到一些几乎与推荐替代品的明确声明相似的东西。
社区中似乎对这种弃用的意义和影响进行了很多讨论。我推荐阅读该线程位于 scala-users 组中 http://grokbase.com/t/gg/scala-user/14byjthm6f/status-of-scala-util-parsing-json如果你有兴趣的话。
这种弃用最常被引用的原因似乎是性能不佳和线程安全性。
弃用是作为这个 Jira 问题 https://issues.scala-lang.org/browse/SI-6571并且在结束评论中建议使用不同的解析器由于弃用而未完成的相关任务 https://issues.scala-lang.org/browse/SI-5092.
替代方案包括:
- 播放 json https://www.playframework.com/documentation/2.1.1/ScalaJson
- 喷雾 json https://github.com/spray/spray-json
- argonaut http://argonaut.io/
- jackson https://github.com/FasterXML/jackson-module-scala
-
狂喜-json https://github.com/propensive/rapture-json(它允许您在不同的实现之间进行选择)
来回答你的问题。这是一个警告,在实际删除该对象之前,您的代码不应中断。但是,如果在此功能中发现新的错误,它们很可能不会被修复。如果您升级到实际上删除了这些软件包的较新版本的 Scala(版本 2.11.0 及更高版本,根据文档 http://www.scala-lang.org/api/2.11.1/scala-parser-combinators/index.html#scala.util.parsing.json.JSON%24)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)