面对 scala.util.parsing.json._ 包的弃用,该使用什么?

2023-12-25

如何解决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(使用前将#替换为@)

面对 scala.util.parsing.json._ 包的弃用,该使用什么? 的相关文章

随机推荐

  • 如何在 Vim 中执行 JSLint

    我每天都在 vim 中度过 目前正在编写大量 JavaScript 我一直在尝试找到一种方法将 JSLint 或类似的东西集成到 vim 中以改进我的编码 有没有人设法做这样的事情 我试过这个 Vim 中的 Javascript 语法检查
  • pbxcp 问题,找不到文件,但它肯定存在

    所以我一直在为我的应用程序处理不同的图像 看看它的外观 替换它 一切都很好 直到早些时候我用我制作的更新版本替换了一个文件 checkmark png 现在当我构建我时得到pbxcp checkmark png no such file o
  • qml虚拟键盘:keyboardDesignWidth和Height

    我正在查看虚拟键盘的 QML 样式 KeyboardDesignWidth 和 Height 的用途是什么 我似乎在管理键盘的宽度和高度方面遇到了很多麻烦 并且永远无法将其设置为我想要的方式 直接设置键盘高度和宽度也没有多大帮助 问题在于组
  • 类型参数和索引之间的区别?

    我是依赖类型的新手 对两者之间的区别感到困惑 似乎人们通常说类型是由另一种类型参数化 and 按某个值索引 但是 在依赖类型语言中 类型和术语之间不是没有区别吗 参数和指数之间的区别是根本性的吗 您能否举例说明它们在编程和定理证明中的含义差
  • size() 在 java 的 ArrayList 类中如何工作?

    所以 为了获得最有效的代码 我真的很想知道size Java中的方法ArrayList工作 它是否会计算每个元素 遍历所有位置 就像一个简单的列表一样 或者它只是根据最后注册的索引获取大小 提前致谢 看看里面永远不会有什么坏处源代码 htt
  • Xcode 6 大小类中的自定义字体大小无法与自定义字体正常工作

    Xcode 6有一个新功能fonts and 字体大小 in UILabel UITextField and UIButton可以根据当前设备配置的尺寸类别自动设置 就在故事板中 例如 您可以设置一个UILabel在 任意宽度 紧凑高度 配
  • 点绕 z 轴旋转

    我在 3D 空间中有 3 个向量 让我们称呼他们为xaxis yaxis and zaxis 这些向量以任意一个为中心point3D 空间中的某处 我有兴趣旋转xaxis and yaxis关于的向量zaxis向量度数 对于以下代码 其值是
  • 为什么 CSS 宽度和高度属性不根据填充进行调整?

    首先来介绍一下场景 HTML div div test div div CSS container width 300px height 150px background color d7ebff inner width 100 heigh
  • 如何在调用某个函数时打印堆栈跟踪

    有没有办法在每次调用某个函数时转储 C 或 C 正在运行的进程中的调用堆栈 我的想法是这样的 void foo print stack trace foo s body return Where print stack trace工作原理类
  • Android JobScheduler onStartJob 被多次调用

    JobScheduler 调用onStartJob 多次 虽然工作完成了 如果我安排一项工作并等到它完成 一切都会很好 但是 如果我同时安排两个或多个具有不同ID的作业 那么onStartJob 调用后再次调用jobFinished 例如我
  • Spring Kafka:轮询新消息,而不是使用“onMessage”通知

    我在我的项目中使用 Spring Kafka 因为在基于 Spring 的项目中使用 Kafka 消息似乎是一个自然的选择 要使用消息 我可以利用MessageListener界面 Spring Kafka 在内部负责调用我的onMessa
  • Lua可以加载C++的dll文件吗?

    我需要在Lua中加载一个DLL文件来连接不同的API 我知道可以加载C类型的dll 但我拥有的是用C 生成的dll文件 生成该库的代码 C 的形式如下 MyAPI h namespace MyAPI public class MyFirst
  • 当有大量文件时,Powershell 在“get-childitem .-directory -recurse”中运行缓慢

    I run PS F gt gci F logs PRV RequestLogs inbound r directory fullname 它显示 F logs PRV RequestLogs inbound 2020 02 03 F lo
  • 字符串流的大小[重复]

    这个问题在这里已经有答案了 有没有直接的方法来计算 stringstream 中内部字符串的大小 Here str 返回一个副本 然后获取字符串的大小 std stringstream oss String oss str size 有 s
  • 发生验证错误后如何使用 PrimeFaces AJAX 填充文本字段?

    我在视图中有一个表单 它执行自动完成和 gmap 本地化的 ajax 部分处理 我的支持 bean 实例化一个实体对象 Address 并且表单的输入被引用到该对象 ManagedBean name mybean SessionScoped
  • 使用InternalsVisibleToAttribute 进行单元测试需要使用/out:filename.ext 进行编译?

    在我最近的问题中 单元测试最佳实践 测试时 VBNET 2 0 的 C InternalsVisibleTo 属性 https stackoverflow com questions 2827051 unit testing best pr
  • Appengine java - Jersey/Jackson JaxbAnnotationIntrospector NoClassDefFoundError

    我正在从现在只读的 Google 群组 App Engine for Java 重新询问一个未回答的问题 因为我遇到了完全相同的问题 original https groups google com d topic google appen
  • @azure/msal-node:有没有办法注销/使令牌失效?

    我正在使用 azure msal node打包在节点应用程序中 以使我的用户能够使用其 AzureAD 凭据登录 登录和获取会话令牌工作正常 但我找不到使会话无效 注销用户的方法 我是否忽略了这里明显的东西 仅供参考 以下是我获取令牌的方式
  • 带有多个小部件的 LibGDX 和 ScrollPane

    尝试将多个项目添加到滚动窗格时 我很快发现所有 addActor 功能均不受支持 因此 我添加了一个包含我想要的所有项目的表格 此代码缺少我仍然想添加的图像 来制作可滚动的制作人员屏幕 但是这种方法 当前 不允许溢出 渲染ScrollPan
  • 面对 scala.util.parsing.json._ 包的弃用,该使用什么?

    如何解决Scala问题 我的项目中使用 JSON 时收到警告 json 包中的对象 JSON 已弃用 该对象将被删除 import scala util parsing json JSON parseRaw a b c d 通常 这意味着一