【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

评论

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

从零开始搭建Kafka+SpringBoot分布式消息系统

小Q

kafka zookeeper 学习 面试 springboot

高并发的核心 - AQS【哪些琐是基于AQS来实现的】

Java架构师迁哥

周小川深度解读:DC/EP和数字人民币e-CNY

CECBC

数字人民币

🤳你要悄悄变优秀,然后惊艳所有人

蚂蚁集团移动开发平台 mPaaS

mPaaS 智能投放 界面改版 产品资讯

AWS IoT Core设计解析

soolaugust

边缘计算 AWS 工业4.0 工业物联网 iiot

年轻人,快来看看分布式与集群的区别是什么?

程序员小灰

redis 分布式 后台开发 集群 Linux服务器开发

架构师训练营 -week11-作业

大刘

极客大学架构师训练营

江西吉安:一个上了区块链柚子的真情告白

CECBC

区块链 蜜柚

记一次GC频繁且间隔较长解决实战总结

AI乔治

Java 架构 JVM GC

语音识别端到端模型解读:FSMN及其变体模型

华为云开发者联盟

大数据 模型 语音识别

解锁高速 IT 团队利器:Jira Service Management

Atlassian

DevOps Atlassian Jira ITSM ITIL

开发技巧 | mPaaS 小程序自定义事件,如何取消注册?

蚂蚁集团移动开发平台 mPaaS

小程序 API mPaaS

接口测试之post常见数据提交方式

测试人生路

post 接口测试

「五大常用算法」一文搞懂分治算法

bigsai

算法 分治算法;

SpringBoot整合Mybatis-Plus 实战之动态SQL,Mybatis最拿得出手的功能之一

比伯

Java 编程 架构 面试 计算机

稳坐开发领域霸主之位,揭秘C语言无可取代的几大原因!

华为云开发者联盟

c rust Go 语言

AOT星辰生态系统APP开发|AOT星辰生态软件开发

系统开发 现成系统

小心踩雷,一次Java内存泄漏排查实战

AI乔治

Java 架构 JVM 内存

LiteOS基于Sensorhub的超声波模组移植

华为云开发者联盟

物联网 LiteOS 超声波

了不起的 Deno:带你极速获取各大平台今日热榜

华为云开发者联盟

Java 安全 deno

深入解读:KubeVela 与 PaaS 有何不同?

阿里巴巴云原生

阿里云 开源 容器 云原生 CloudNative

数字货币管理三大新模式

CECBC

数字货币

面对日益严峻的网络安全问题,CDN可以做什么?

阿里云Edge Plus

华为云&跟谁学|华为云API入门学习赛·AI人脸识别 未来工程师梦想的起点

DT极客

框架设计

raox

极客大学架构师训练营

将项目发布到 Homebrew 官方仓库

郭旭东

macos brew homebrew

2020亚马逊“黑五”再次成为亚马逊史上最大的年终全球狂欢

爱极客侠

为什么short、byte会被提升为int?及基本类型的真实大小

烫烫烫个喵啊

Java JVM

「linux」Socket缓存是如何影响TCP性能的?

linux大本营

Linux 后台开发 socket 架构师 TCP/IP

专访阿里云 Serverless 负责人:无服务器不会让后端失业

阿里巴巴云原生

Serverless 微服务 云原生 CloudNative 无服务器

3本书免费学习数据科学与统计学

计算机与AI

统计学

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