什么是JSON处理(JSON-P API)?

Java EE中的JSON-P简介

JSON处理1.0( JSR 353 )的Java API是一个低级,轻量级的JSON解析器和生成器,它提供了在属性和值级别上操作JSON数据的能力。

JSR 353提供了两种JSON处理模型: 对象模型和模型。 两种模型都可以生成JSON数据并将其输出到流(例如平面文件)中,并且两种模型都可以读取数据。 但是,流模型在处理大量JSON数据时特别有效。 这允许实现数据导入功能以及即时转换此类数据。

但是,流模型在处理大量JSON数据时特别有效。 这允许实现数据导入功能以及即时转换此类数据。

JSON-P对象模型

javax.json包提供了用于处理JSON数据的对象模型API。 它包括为JSON结构建模的类和用于JSON读取器和写入器的工厂。

Object模型将构成JSON数据结构的元素表示为对象。 例如,JSON数组由javax.json.JsonArray类表示,并且该类又实现List接口。

JSON对象由实现Map接口的javax.json.JsonObject类表示。

javax.json.Json类包含各种工厂方法,这些方法可创建JsonGeneratorJsonParserJsonReader实例。

以下代码段从JSON文档创建JSONObject实例,然后从其属性中检索数据。

1: private String json = "{\"id\": 123456, \"title\": \"Fun with JSON-Processing\", \"published\": true}";

2: JsonReader jsonReader = Json.createReader(new StringReader(json));
3: JsonObject jsonObject = jsonReader.readObject();
4: jsonReader.close();
5: jsonObject.getInt("id")
6: jsonObject.getString("title")
7: jsonObject.getBoolean("published")

第1行是我要处理的JSON文档。 我创建一个StringReader对象的实例,并将其传递给JSON文档,该文档通过createReader()静态方法传递给JsonReader

我在第3行将JSON文档读入JsonObject实例,并在第4行关闭阅读器。

现在有了JsonObject,我可以通过将属性名称传递给getString()方法来读取JSON属性的值。

此示例的代码存储在此文章随附的GitHub存储库中。

JSON-P流模型

javax.json.streaming包提供了解析和生成JSON数据的Streaming模型API。 它包括用于创建解析器和生成器的工厂。

它的实现方式完全不同,而且级别较低。 从本质上讲 ,有两个主要的工厂来生成和解析JSON数据,它们是JsonGeneratorFactoryJsonParserFactory 。 这些工厂面向写入和读取数据流。

通过链接将数据添加到缓冲区的方法,然后通过调用flush或close方法将其刷新到输出流,来完成JSON数据的写入。

JSON数据以流方式进行解析,并且被设计为读取JSON数据的最有效方法。 解析器是从InputStreamReader输入源创建的。

以下代码段通过使用JsonObjectBuilder上的构建器方法构造一个JSONObject实例,然后从JsonObject检索数据。

1: JsonObject jsonObject = Json.createObjectBuilder()
        .add("id", 123456)
        .add("title", "Fun with JSON-Processing")
        .add("published", true)
        .build();

2: jsonObject.getInt("id")
3: jsonObject.getString("title")
4: jsonObject.getBoolean("published")

在第1行上,构造了JsonObject 。 如您所见,它从Json类调用静态createObjectBuilder()方法,并且我为JsonObject拥有的多个属性调用add方法。 在这种情况下,我需要三个属性:id,title和published。 最后一个方法是build()方法,该方法构造JsonObject

第2到4行在JsonObject的第1行上建立了getter方法,并像上一个示例一样一一检索属性值。

此示例的代码存储在此文章随附的GitHub存储库中。

接下来是什么?

如果您喜欢本文,您将喜欢我为Lynde.com录制的新的Java EE JSON处理课程。 在本课程中,我将深入研究整个API,将其视为对象和流模型。 我使用了大量的代码示例,并给您设置挑战,以帮助您提高学习效率。

进一步阅读

我经常发布有关Java EE技术的文章,因此您可能对以下内容感兴趣:

翻译自: https://www.javacodegeeks.com/2017/09/json-processing-json-p-api.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值