首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

JEP 540:简单的 JSON API(现已在孵化器中)

2026-07-23 1 阅读 约7分钟阅读 theanonymousone
分享:
字号:
JEP 540:简单 JSON API(孵化器) 作者 Naoto Sato、Paul Sandoz、Justin Lu、Stuart Marks 所有者 Naoto Sato 类型功能范围 JDK 状态候选组件 core-libs 讨论 core dash libs dash dev at openjdk dot org Effort M Duration M 审核者:Alex Buckley 创建于 2024/11/13 23:54 更新2026/07/23 14:51 Issue 8344154 摘要 定义一个简单、标准的 API 来解析和生成 JSON 文档,这样就不需要外部库。只需很少的编码即可完成许多 JSON 处理任务。这是一个正在孵化的API。历史 此 JEP 取代了 2014 年编写的 JEP 198(轻量级 JSON API)。在这几年中情况发生了变化,因此我们在这里采取不同的方法。目标 在 Java 平台中提供一种标准方法,以简单的方式处理符合 RFC 8259 的 JSON 文档。保持 API 小、简单且易于学习。仅提供严格符合 RFC 8259 所需的数据类型和操作,以促进机器对机器的通信。避免使用多重解析配置、语法扩展、数据绑定和流式传输等功能。确保从具有已知结构的 JSON 文档中导航和提取数据的代码简单且可读。由于 JSON 文档没有模式,因此此类代码充当事实上的模式并且应该具有可读性。能够轻松快速地探索不熟悉的 JSON 文档。我们经常以探索性的方式与 JSON 文档交互,编写代码时不使用规范,而是针对示例文档进行尝试。 API 应提供快速失败并带有清晰错误消息的方法,从而实现快速探索。确保可以以弹性方式处理丢失或意外的值,因为 JSON 文档结构会随着时间的推移而演变。使JDK本身能够解析并生成JSON文档。非目标 创建一个 API 来取代已建立的外部 JSON 库并不是我们的目标。动机 JSON 在现代计算中无处不在。 Java 生态系统包含各种已建立的 JSON 库:Jackson、Gson、Jakarta JSON 处理和绑定、Fastjson 2 等。这些库不仅能够解析和生成 JSON 文档,而且还支持扩展的 JSON 语法(例如 JSON5),并包含更高级别的功能,例如数据绑定(即,以高度定制的方式将 Java 对象与 JSON 相互转换)以及基于事件的流。然而,我们通常只需要执行简单的任务,例如从 JSON 文档中提取一些数据。完成此类任务的 Python 或 Go 代码很简单; Java 代码应该同样简单。例如,考虑计算美国国家气象局 REST API 响应中一组预测温度平均值的任务。响应是一个 JSON 文档,如下所示: { ... "properties": { ... "periods": [ { "number": 1, "name": "Today", "startTime": "2026-04-22T06:00:00-04:00", "endTime": "2026-04-22T18:00:00-04:00", "isDaytime": true, "温度": 54, "温度单位": "F", ... }, { "数字": 2, "名称": "今晚", "startTime": "2026-04-22T18:00:00-04:00", "endTime": "2026-04-23T06:00:00-04:00", "isDaytime": false, "温度": 48, "templeUnit": "F", ... }, { "number": 3, "name": "星期四", "startTime": "2026-04-23T06:00:00-04:00", "endTime": "2026-04-23T18:00:00-04:00", "isDaytime": true, "温度": 68, "templeUnit": "F", ... }, ... ] } } 要计算平均预测温度,需要解析文档、导航到结构中包含预测的位置,并在提取温度数据时迭代预测数组。我们应该能够使用简单的 Java 代码来处理这样的简单任务,而无需安装外部库,也无需怀疑另一种语言可能会让我们更有效率。推动 Java 平台近期发展的一个关键目标是让简单的任务能够更轻松地完成,并且减少仪式感。服务于此目标的功能包括用于集合的便捷工厂方法、var 声明、从源文件运行程序以及紧凑的源文件和实例主方法。用于解析和生成 JSON 文档的简单 JSON API 也可以实现这一重要目标。在 JDK 中使用 JSON Java 平台中的标准 JSON API 也将为平台和 JDK 本身进一步使用 JSON 铺平道路,因为 JDK 不能具有外部依赖项。一种潜在的用例是配置文件。 JDK对各种配置文件(例如安全属性文件)使用属性文件格式。这种格式的一个弱点是它无法表达结构化数据。要在属性文件中表示数组,必须使用笨拙的解决方法,例如按顺序编号的属性: security.provider.1=SUN security.provider.2=SunRsaSign security.provide
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱