什么是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类包含各种工厂方法,这些方法可创建JsonGenerator , JsonParser和JsonReader实例。

以下代码段从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数据,它们是JsonGeneratorFactory和JsonParserFactory 。 这些工厂面向写入和读取数据流。

通过链接将数据添加到缓冲区的方法,然后通过调用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技术的文章,因此您可能对以下内容感兴趣:

  • 上下文和依赖注入 (CDI)
  • 企业Java Bean (EJB)
  • JSP,JSP和表达语言
  • RESTful Web服务

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电视机原理图_电工电气,如何看电气原理图和接线图,如何设计图纸?

电气图纸一般可分为两大类,一类为电力电气图,它主要是表述电能的传输、分配和转换,如电网电气图、电厂电气控制图等。另一类为电子电气图,它主要表述电子信息的传递、处理;如电视机电气原理图。本文主要谈电力电气图的…

NOIP模拟测试39,思维禁锢专场「工业题·玄学题·卡常题」

工业题 题解 抱歉,题解没时间写了 代码 #include<bits/stdc.h> using namespace std; #define ll long long #define A 6666666 #define mod 998244353 ll jie[A],ni[A],acnt[A],bcnt[A]; ll fheng[A],fshu[A]; ll n,m,a,b; ll meng(ll x,ll k){ll ans1;for(;k;k>>…

ubuntu 如何登录远程服务器_VSCode远程登录云服务器、树莓派实现在线调试代码...

在PyCon2019大会上&#xff0c;微软发布了VSCode Remote&#xff0c;开启了远程开发的新时代&#xff01;Remote可以帮助开发者在容器、物理机器或虚拟机&#xff0c;以及WSL上实现无缝的远程开发。通过安装Remote Development Extension Pack&#xff0c;开发者可以快速上手远…

macosx jdk_MacOSX环境上的多个Java JDK

macosx jdk同样&#xff0c;这是在Mac&#xff08;OSX 10.8.x &#xff09;上配置Java开发环境的一个小技巧。 如果您现在真的开始&#xff0c;我建议您阅读我以前的文章之一 &#xff0c;这是一种快速干净的方法&#xff08;我想&#xff09;来设置环境变量并开始Java编码。 今…

屏幕方向读取与锁定:Screen Orientation API(转)

什么是 Screen Orientation API Screen Orientation API 为 Web 应用提供了读取设备当前屏幕方向、旋转角度、锁定旋转方向、获取方向改变事件的能力。使得特定应用在屏幕方向方面增强用户体验&#xff0c;如视频和游戏。该标准目前处于工作组草案状态&#xff0c;最近一个修改…

scenebuilder各控件属性介绍_Flutter 全栈式——基础控件

在Flutter中&#xff0c;UI小控件有两种设计风格&#xff0c;一种是Material设计&#xff0c;这是安卓的官方设计风格&#xff0c;另一种则是Cupertino风格&#xff0c;是iOS的官方设计风格。因此&#xff0c;当遇到带有这两个单词开头的控件时&#xff0c;我们应该明确他们表达…

正义联盟的Spring靴

正义联盟的黑暗时代已经来临&#xff0c;强大的Darkseid即将征服人类。 蝙蝠侠在《神力女超人》的帮助下&#xff0c;努力使联盟与一个关键方面失联。 适当的正义联盟成员管理系统。 由于时间不在他们身边&#xff0c;他们不想经历繁琐的过程&#xff0c;从头开始用他们需要的所…

Fetch

fetch是一种HTTP数据请求的方式&#xff0c;是XMLHttpRequest的一种替代方案。fetch不是ajax的进一步封装&#xff0c;而是原生js。Fetch函数就是原生js&#xff0c;没有使用XMLHttpRequest对象。 ajax 使用步骤1.创建XmlHttpRequest对象2.调用open方法设置基本请求信息3.设置发…

boost安装_Centos安装MySQL

安装MySQLMySQL 各版本介绍视频观看:https://www.bilibili.com/video/BV1ap4y1i75jMySQL 官网:https://www.mysql.com/cn/MySQL Community Server社区版本&#xff0c;开源免费&#xff0c;但不提供官方技术支持。MySQL Enterprise Edition 企业版本&#xff0c;需付费&#xf…

选择Java加密算法第3部分–公钥/私钥非对称加密

抽象 这是涵盖Java加密算法的三部分博客系列的第3部分。 本系列介绍如何实现以下目标&#xff1a; 使用SHA–512散列 使用AES–256的单密钥对称加密 RSA–4096 这第三篇文章详细介绍了如何实现非对称的RSA-4096公/私钥加密。 让我们开始吧。 免责声明 这篇文章仅供参考。 …

Error: Cannot find module '@babel/core'

官方默认babel-loader需要搭配最新版本babel 更新到最高版本: npm install -D babel-loader babel/core babel/preset-env webpack 转载于:https://www.cnblogs.com/nocry/p/11493363.html

javabeans_膨胀的JavaBeans –不要在您的API中添加“ Getters”

javabeans我已经最近在博客的想法的JavaBeans™如何可以扩展以减少在Java世界中&#xff0c;这被广泛接受的公约设立的膨胀。 该文章在DZone上重新发布&#xff0c;并在这里获得了颇具争议的反馈&#xff08;例如&#xff0c;大多数试图将一些新想法带入Java世界的想法&#xf…

uniapp 子组件 props拿不到数据_来吧!一文彻底搞定Vue组件!

点击蓝色 “达达前端小酒馆” 关注我哦!加个 “星标” &#xff0c;每天一篇文章&#xff0c;一起学编程作者 | Jeskson来源 | 达达前端小酒馆Vue组件的概述组件是什么呢&#xff0c;了解组件对象的分析&#xff0c;Vue组件中的data属性&#xff0c;props传递数据的原理到底是…

csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」

夜莺与玫瑰 题解 联赛$T1$莫比乌斯$\%\%\%$ $dead$ $line$是直线 首先横竖就是$nm$这比较显然 枚举方向向量 首先我们枚举方向向量时只枚举右下方向,显然贡献$*2$就是所有斜着的直线 $i,j$表示当自己向右$i$个单位长度,向下$j$单位长度 我们相同斜率下只算最短的线贡献,(因为其…

春天重试,因为冬天来了

好的&#xff0c;这实际上与冬天无关&#xff0c;众所周知&#xff0c;冬天已经到了 。 它是关于Spring Retry的&#xff0c;Spring是一个小的Spring框架库&#xff0c;它使我们可以将重试功能添加到应可重试的任何任务中。 这里有一个很好的教程 &#xff0c;解释了如何设置简…

python做些什么项目_Python 的练手项目有哪些值得推荐

1 Web方向的练手项目 这个其实是肯定不用多少的了。Python的练手项目就是可以做一个网站了。我们可以做一个属于自己的博客。在做博客的时候&#xff0c;我们可以巩固的知识点是 HtmlCSSJS的基础知识&#xff0c;以及熟练的运用Python的Web开发框架&#xff08;例如Django或者F…

删除某个时间段之前的文件

/* * 删除文件夹下$n分钟前创建的文件 * param $dir 要处理的目录&#xff0c;物理路径&#xff0c;结尾不加\ * param $n 过期时间&#xff0c;单位为分钟 * return void */function z_del_file_by_ctime($dir,$n){ if(is_dir($dir)){ if($dhopendir($dir)){ …

技术管理规划-路径跟资源

背景 评估团队的投入和产出或者给上级做汇报&#xff0c;都需要弄清楚需要投入多少资源&#xff0c;而资源主要跟两个因素息息相关&#xff0c;即团队目标&#xff0c;此外还有路径和手段&#xff1b; 增加人力前的三个问题&#xff1f; 1.资源的丰富性&#xff1f; 人&#xf…

python保存代码_python入门(5)使用文件编辑器编写代码并保存执行

原博文 2017-04-21 17:21 − python入门&#xff08;5&#xff09;使用文件编辑器编写代码并保存执行 两款文本编辑器&#xff1a; 一个是Sublime Text&#xff0c;免费使用&#xff0c;但是不付费会弹出提示框&#xff1a; 一个是Notepad&#xff0c;免费使用&#xff0c;有中…

lucene索引搜索_Lucene –快速添加索引和搜索功能

lucene索引搜索什么是Lucene&#xff1f; Apache LuceneTM是完全用Java编写的高性能&#xff0c;功能齐全的文本搜索引擎库。 它是一项适用于几乎所有需要全文本搜索的应用程序的技术&#xff0c;尤其是跨平台。 Lucene可以纯文本&#xff0c;整数&#xff0c;索引PDF&#xf…