NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:001916

评论

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

Guitar Pro2024最新免费版吉他打谱软件下载

茶色酒

Guitar Pro Guitar Pro8 guitar pro2023

直播交友一对一视频语音APP项目系统架构和模式分析(成品1对1源码)

山东布谷科技胡月

视频语音直播app开发 语音直播交友系统搭建 社交app开发 1v1语音系统搭建 视频社交APP开发

极客时间运维进阶训练营第十周作业

老曹

尝试阅读理解一份linux shell脚本

eng八戒

bash Shell Linux Kenel 脚本

用 SwiftUI 实现 AI 聊天对话 app - iChatGPT

37手游iOS技术运营团队

ios SwiftUI openai ChatGPT

运维训练营第十一课作业

好吃不贵

MySQL字符集和排序规则详解

C++后台开发

MySQL 数据库 中间件 后端开发 C++开发

HAOMO AI DAY速递:六大闭环、MANA五大模型助力毫末智能驾驶产品快速迭代

科技大数据

选购LED显示屏时需要注意8个技术参数

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

追求技术极致 探索落地先机 毫末智行城市NOH公布未来产品规划

科技大数据

新能源汽车

VSCODE 配置远程调试环境

eng八戒

ide vscode 服务器

怎么用vscode创建工程

eng八戒

ide vscode koa

毫末智行稳健收官2022“三大战役” 火力全开打响2023“四大战役”

科技大数据

使用 App Store Connect API 批量创建内购商品

37手游iOS技术运营团队

AppleParty 苹果派 App Store Connect API 批量创建内购IAP 批量上传 IAP

【Redis技术探索】「数据迁移实战」手把手教你如何实现在线+离线模式进行迁移Redis数据实战指南(在线同步数据)

洛神灬殇

redis 数据同步 1月日更 数据同步工具 RedisShake

Button(按钮)与ImageButton(图像按钮)

智趣匠

Android Studio button imagebutton

线上压测

agnostic

中国自动驾驶行业最大智算中心亮相 毫末顾维灏:毫末车端感知架构实现跨代升级

科技大数据

汽车

多位AI学者、行业大牛、企业家齐聚2023 HAOMO AI DAY分享自动驾驶行业前沿洞见

科技大数据

OpenTelemetry日志体系

骑牛上青山

Java 日志 log 调用链 OpenTelemetry

社交视频直播一对一交友APP源码之Android如何打包APP

山东布谷科技胡月

语音直播app开发

盘点毫末智行AI DAY:智算中心成立、六大闭环、MANA五大模型...助力毫末智能驾驶产品快速迭代

科技大数据

元器件温度系数(ppm/℃)是什么?

不脱发的程序猿

元器件温度系数

2023-01-07:hyper/docker-registry-web是registry的web界面工具之一。请问部署在k3s中,yaml如何写?

福大大架构师每日一题

云原生 k8s k3s 福大大

TSDB助力井下位置服务

CnosDB

数据库 IoT 时序数据库 开源社区 infra

无线配置多一个路由器作为家庭wifi的无线热点?

eng八戒

家庭网络 热点

三年成功实现7次OTA升级!MANA六大闭环成毫末产品迭代强大助力

科技大数据

数据湖(十七):Flink与Iceberg整合DataStream API操作

Lansonli

数据湖

毫末智行稳健收官2022“三大战役” 火力全开打响2023“四大战役”

科技大数据

智能汽车

《零基础学 Python(2023 版)》学习笔记 Day0

IT蜗壳-Tango

Python编程 IT蜗壳教学

【Redis 技术探索】「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移Redis数据实战指南(离线同步数据)

洛神灬殇

redis 1月日更 RedisShake Redis-shake

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