如何解决Scala问题? 我在项目中通过JSON使用警告:
包json中的对象JSON已被删除。这个对象将是 除去。
import scala.util.parsing.json._
JSON.parseRaw("[{'a':'b'},{'c':'d'}]")
答案 0 :(得分:13)
通常,这意味着一个功能已被另一个实现取代,其使用优于旧实现,而这样的问题仅仅意味着OP懒得谷歌文档。对于Java语言中的库来说尤其如此,它非常严肃地对待向后兼容性(对于某些人来说它变得很痛苦)。 Scala生态系统在这方面并不是那么严格,升级到更新版本的语言意味着您可以获得不同的API甚至binary incompabilities。另见Scala: binary incompatibility between releases。这不是对Scala的评论。存在这些不兼容性的充分理由。
但是,我必须承认documentation for scala.util.parsing.json
不包含任何有关此功能的推荐替代品的信息。我花了很长时间才挖掘出一些与推荐替代品的明确陈述相似的东西。
社区中似乎有很多关于这种弃用的观点和影响的讨论。如果您有兴趣,我建议您阅读this thread in the scala-users group。
这种弃用的最多引用理由似乎是性能不佳和线程安全。
弃用是作为this Jira issue的一部分完成的,并且在this related task that was not completed due to the deprecation的结束评论中建议使用不同的解析器。
替代方案包括:
回答你的问题。这是一个警告,在实际删除此对象之前,您的代码不应中断。但是,如果在此功能中发现新的错误,则很可能不会修复它们。如果您升级到实际删除了这些软件包的较新版本的Scala,您的代码也会中断(版本2.11.0及更高版本,according to the documentation)
答案 1 :(得分:2)
@toniedzwiedz先前提供的答案非常完整,并描述了围绕这个问题的整个故事。
我只是使用Scala 2.11
遇到了同样的问题,我解决了添加in this repository的依赖关系。
特别是,Scala 2.11
是:
<dependency>
<groupId>org.scala-lang.modules</groupId>
<artifactId>scala-parser-combinators_2.11</artifactId>
<version>1.1.0</version>
</dependency>
然后你就没有警告了。
答案 2 :(得分:0)
另外考虑使用Lift JSON作为替代
https://github.com/lift/lift/tree/master/framework/lift-base/lift-json/
答案 3 :(得分:-2)
不推荐使用Scala标准库中的JSON解析器。您应该选择一个更强大的第三方库,如Jackson,Play-Json,json4s等。