写点什么

JSON-P 1.1 现已发布公开预览版

  • 2017-03-14
  • 本文字数:1902 字

    阅读完需:约 6 分钟

JSR 374(JSON-P 1.1 版本)的公开预览版现在已经开放,JSON-P 是一个针对处理 JSON 的 Java API。这个版本有望和 JSON 绑定库(JSON-B)的 Java API 一同被添加到 Java EE 8 的发布版本中,并且它还保持了 JSON-P 当前所支持的 JSON IETF标准。它提供了如下支持:

在 2013 年,JSON-P 作为 Gson Jackson 的替代方案,被引入到 J2EE 7 的发布版本中。它被设计用于解析、生成和查询标准的 JSON 文档。

JSR-367 是 JSON 绑定库的 Java API,它也被纳入了 Java EE 8 的发布版本中。JSON-B 被设计用来将 JSON 与 Java 中的对象绑定起来。InfoQ 对之前 JSON-B 公开预览版的发布也有过报道

入门指南

我们先从 JSON-P 的解析器(Parser)和指针(Pointer)的一个例子开始入门,考虑如下的 JSON 文档:

复制代码
[
{
"publication":"New Vaadin Spring Release Introduces Enhanced View Management",
"publicationDate":"2016-12-30 00:00:00",
"author":"Michael Redlich",
"publicationType":"Article",
"publisher":"C4Media"
},
{
"publication":"Pivotal Releases First Milestone of Next-Generation Spring Data Featuring Reactive Database Access",
"publicationDate":"2017-01-19 00:00:00",
"author":"Michael Redlich",
"publicationType":"Article",
"publisher":"C4Media"
},
{
"publication":"Netflix Introduces Hollow, a Java Library for Processing In-Memory Datasets",
"publicationDate":"2017-01-31 00:00:00",
"author":"Michael Redlich",
"publicationType":"Article",
"publisher":"C4Media"
}
]

这个 JSON 文档可以使用JsonParser进行解析:

复制代码
InputStream fis = new FileInputStream(JSON_FILE);
JsonParser parser = Json.createParser(fis);
while(parser.hasNext()) {
JsonParser.Event event = parser.next();
switch(event) {
case START_ARRAY:
case END_ARRAY:
case START_OBJECT:
case END_OBJECT:
case VALUE_FALSE:
case VALUE_NULL:
case VALUE_TRUE:
System.out.println(event.toString());
break;
case KEY_NAME:
System.out.print(event.toString() + " " + parser.getString() + " - ");
break;
case VALUE_STRING:
case VALUE_NUMBER:
System.out.println(event.toString() + " " + parser.getString());
break;
}
}
fis.close();

通过使用JsonPointer,我们能够找到 JSON 文档中的特定元素:

复制代码
InputStream fis = new FileInputStream(JSON_FILE);
JsonReader jsonReader = Json.createReader(fis);
JsonArray jsonArray = jsonReader.readArray();
JsonPointer pointer = Json.createPointer("/1/publication");
JsonValue publication = pointer.getValue(jsonArray);
System.out.println(i + ": " + publication);
fis.close();

这个例子中找到并且显示出了上述 JSON 文档中的第二个 publication。我们在 GitHub 上准备了一个完备的实例程序,其中包括 JSON-P、Gson 以及 Jackson。

最新的 JSON-P 1.1规格书能够在 JSR-374 网站下载到。

大名鼎鼎的Java EE 传播者 Reza Rahman 最近发布了一篇博客,他在其中阐述了 JSON 在 Java EE 8 中起到的作用:

这两个 API 对于加强 JSON 在 Java 中的地位至关重要,就像 JAXP(处理 XML 的 Java API)和 JAXB(XML 绑定库的 Java API)在许多年前所起的作用一样。通过这两个 API,Java 开发者可以简单地将 JSON 视为另一种 Java 序列化格式。不需要过多的第三方库和配置了:JSON 处理变得极其简单。在我看来,这些 API 非常关键,它们应该被纳入一个模块化的 Java SE 版本中,就像是 JAXB 和 JAXP 已经成为了 Java SE 中的一部分一样。

JSON-P 和 JSON-B 的最终版本有望在 2017 年 4 月发布。

其它资源

关于 JSON-P 的其它更多信息请访问如下资源:

查看英文原文: Public Review of JSON-P Specification 1.1 is Now Open


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-03-14 19:002537

评论

发布
暂无评论
发现更多内容

黑龙江等保测评全流程解析:合规之路的关键步骤

等保测评

哈尔滨等保测评:标准化流程与分级周期指南

等保测评

如何通过YashanDB数据库提升企业数据分析能力

数据库砖家

如何通过YashanDB数据库提升团队协作与数据共享效率

数据库砖家

系统里数据又“打架”了?让“少数服从多数”来终结这场混乱!

poemyang

分布式 分布式系统

如何用YashanDB数据库降低数据访问延迟

数据库砖家

AI 英语写作 APP 的核心功能

北京木奇科技有限公司

软件外包公司 AI英语学习 AI英语写作

通过YashanDB数据库提升系统响应速度的技术分析

数据库砖家

如何通过YashanDB优化数据可视化效果?

数据库砖家

CST软件如何获取二极管的IV曲线

思茂信息

cst电磁仿真 CST软件 CST Studio Suite

如何用YashanDB实现企业数据库实时备份与恢复

数据库砖家

充分验证用户需求和商业价值,是软件创业者首要解决的问题

Feedalyze

创业 效率工具 产品经理 运营 用户反馈

为什么过滤 rtmpt 而不是 rtmp?

小曾同学.com

RTMP 实时音视频 RTMPT

2025年 哈尔滨等保测评:三大核心变化及落地路径

等保测评

AI英语写作APP的开发

北京木奇科技有限公司

软件外包公司 AI英语写作 AI英语

如何用YashanDB数据库解析复杂查询

数据库砖家

如何优化YashanDB数据库查询语句提升响应速度?

数据库砖家

如何在YashanDB数据库环境中处理多版本数据

数据库砖家

在YashanDB数据库上执行数据迁移的技术解析

数据库砖家

如何通过YashanDB提升网站后的数据处理能力

数据库砖家

如何选择合适的YashanDB数据库架构以提升性能

数据库砖家

如何在YashanDB数据库中编写高效查询

数据库砖家

如何有效管理YashanDB的用户身份与权限?

数据库砖家

如何有效利用YashanDB数据库提升企业数据管理效率

数据库砖家

如何通过YashanDB数据库有效解决数据孤岛问题

数据库砖家

如何通过YashanDB提升企业数据管理效率与安全性

数据库砖家

如何通过YashanDB应对数据增长带来的挑战?

数据库砖家

如何为YashanDB数据库选择合适的编程接口

数据库砖家

如何为YashanDB数据库选择合适的硬件环境

数据库砖家

如何选择合适的YashanDB数据库版本

数据库砖家

如何在YashanDB上构建强大的数据仓库

数据库砖家

JSON-P 1.1现已发布公开预览版_Java_Michael Redlich_InfoQ精选文章