JSON处理的Java API(JSR-353)–流API

Java很快将具有一组标准的API,作为Java EE 7的一部分处理JSON。此标准定义为JSR 353 – JSON处理的Java API (JSON-P),目前正在最终批准投票中。 JSON-P提供面向对象和基于流的方法,在本文中,我将介绍流API。 您可以从下面的链接获取JSON-P参考实现:

  • http://java.net/projects/jsonp/


JsonGenerator(javax.json.stream)

JsonGenerator使创建JSON非常容易。 凭借其流畅的API ,用于生成JSON的代码与生成的JSON非常相似。

package blog.jsonp;import java.util.*;
import javax.json.Json;
import javax.json.stream.*;public class GeneratorDemo {public static void main(String[] args) {Map<String, Object> properties = new HashMap<String, Object>(1);properties.put(JsonGenerator.PRETTY_PRINTING, true);JsonGeneratorFactory jgf = Json.createGeneratorFactory(properties);JsonGenerator jg = jgf.createGenerator(System.out);jg.writeStartObject()                    // {.write("name", "Jane Doe")           //    "name":"Jane Doe",.writeStartObject("address")         //    "address":{.write("type", 1)                //        "type":1,.write("street", "1 A Street")   //        "street":"1 A Street",.writeNull("city")               //        "city":null,.write("verified", false)        //        "verified":false.writeEnd()                          //    },.writeStartArray("phone-numbers")    //    "phone-numbers":[.writeStartObject()              //        {.write("number", "555-1111") //            "number":"555-1111",.write("extension", "123")   //            "extension":"123".writeEnd()                      //        },.writeStartObject()              //        {.write("number", "555-2222") //            "number":"555-2222",.writeNull("extension")      //            "extension":null.writeEnd()                      //        }.writeEnd()                          //    ].writeEnd()                              // }.close();}}

输出量

以下是运行GeneratorDemo的输出。

{"name":"Jane Doe","address":{"type":1,"street":"1 A Street","city":null,"verified":false},"phone-numbers":[{"number":"555-1111","extension":"123"},{"number":"555-2222","extension":null}]
}

JsonParser(javax.json.stream)

使用JsonParser,我们将解析上一示例的输出以获取地址信息。 JSON解析器提供与JSON结构相对应的事件的深度优先遍历。 根据事件的类型,可以从JsonParser获得不同的数据。

package blog.jsonp;import java.io.FileInputStream;
import javax.json.Json;
import javax.json.stream.JsonParser;
import javax.json.stream.JsonParser.Event;public class ParserDemo {public static void main(String[] args) throws Exception  {try (FileInputStream json = new FileInputStream("src/blog/jsonp/input.json")) {JsonParser jr = Json.createParser(json);Event event = null;// Advance to "address" keywhile(jr.hasNext()) {event = jr.next();if(event == Event.KEY_NAME && "address".equals(jr.getString())) {event = jr.next();break;}}// Output contents of "address" objectwhile(event != Event.END_OBJECT) {switch(event) {case KEY_NAME: {System.out.print(jr.getString());System.out.print(" = ");break;}case VALUE_FALSE: {System.out.println(false);break;}case VALUE_NULL: {System.out.println("null");break;}case VALUE_NUMBER: {if(jr.isIntegralNumber()) {System.out.println(jr.getInt());} else {System.out.println(jr.getBigDecimal());}break;}case VALUE_STRING: {System.out.println(jr.getString());break;}case VALUE_TRUE: {System.out.println(true);break;}default: {}}event = jr.next();}}}}

输出量

下面是运行ParserDemo的输出

type = 1
street = 1 A Street
city = null
verified = false

MOXy和JSON处理的Java API(JSR-353)

将JSON映射到域对象仍然是与JSON交互的最简单方法。 现在,JSR-353即将完成,我们将其集成到MOXy的JSON绑定中。 您可以使用以下链接跟踪我们的进度:

  • 错误405161 – MOXy支持Java API进行JSON处理(JSR-353)

参考: 用于JSON处理的Java API(JSR-353)– Java XML和JSON绑定博客中来自我们JCG合作伙伴 Blaise Doughan的流API 。

翻译自: https://www.javacodegeeks.com/2013/04/java-api-for-json-processing-jsr-353-stream-apis.html

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

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

相关文章

判的质数的三种方法

方法一&#xff1a;bool判断法 Console.Write("q请输入一个数&#xff1a;"); int aint.Parse(Console.ReadLine()); bool isFind false; for (int i 2; i < a - 1; i) {   if (a % i 0)   {     isFind true;     break;   } } if (isFind tr…

记录工作中常用的CSS3

1.边框圆角,边框阴影 border-radius:6px; // border-radius:50%; //圆形 box-shadow: 1px 1px 1px #666; //box-shadow: h-shadow v-shadow blur spread color inset(outset); 2.背景图片的大小 background-size: 100% 100%; //对背景图片进行拉伸&#xff0c;使其完成填充内…

pcb成型板aoi检测_基于AOI技术的PCB常见质量缺陷检测

..优质资料..基于AOI技术的PCB常见质量缺陷检测摘要&#xff1a;印制电路板简称PCB&#xff0c;作为电子元器件的支撑体和电子元器件电气连接的载体&#xff0c;是重要的电子部件&#xff0c;由于它采用的是电子印刷术制作的&#xff0c;所以被称为印制电路板。AOI全称自动光学…

直接从JBoss AS 7组件使用JGroups

JGroups是Bela Ban的用于可靠消息交换的软件&#xff0c;该软件高度可配置&#xff0c;可以使用TCP或UDP作为传输协议。 基本上&#xff0c;您在多个客户端上运行JGroup&#xff0c;它们构成一个集群&#xff0c;它们可以在集群内发送和接收消息。 JGroups由JBoss Infinispan内…

LeetCode(28): 实现strStr()

Easy&#xff01; 题目描述&#xff1a; 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串&#xff0c;在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在&#xff0c;则返回 -1。 示例 1: 输入: haystack "hello"…

vue2.0 配置build项目打包目录、资源文件(assets\static)打包目录

vue项目默认的打包路径&#xff1a;根目录下的dist文件夹下&#xff1b; 但是在项目开发中&#xff0c;我们肯定希望项目提交到svn目录或者git目录下&#xff0c;否则每次复制过去&#xff0c;太麻烦了&#xff1b; 那怎么配置打包路径呢&#xff1f;下面来看看&#xff1b; 我…

打印机网络共享服务器不稳定,共享打印机无法访问怎么办,教你一招问题立马解决...

基本上只有本地打印机共享才会出现下面的问题&#xff0c;通过网线连接和打印机服务器连接的打印机不会出现此类问题&#xff0c;多个电脑连接网络打印机本质上还是各个电脑连接的本地打印机。一、 设置打印机共享时出现错误连接好本地打印机后&#xff0c;想要共享给同事使用&…

css多浏览常见问题

关于CSS对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是.以下内容没有太多新颖, 纯属个人总结, 希望能对初学者有一定的帮助. 一、CSS HACK 以下两种方法几乎能解决现今所有HACK. 1, !important 随着IE7对!important的支持, !important 方法现在只针对IE6的…

0 win10重装partition_教你在安装WIN10系统中所遇到问题处理方法

光盘安装系统时提示&#xff1a;windows 无法安装到这个磁盘。选中的磁盘采用 GPT 分区形式问题&#xff1a;一般为笔记本光盘安装提示 win7 或 win8系统时 windows 无法安装到这个磁盘&#xff0c;选中的磁盘采用 GPT分区形式。(光盘 PE模式分区后都是主分区&#xff0c;Ghost…

常用matlab函数(不定时更新)

直方图类&#xff1a;histc 直方图分组 示例 histc(a,0:1:10) 意义&#xff1a;将a&#xff08;矩阵或向量&#xff09;分组&#xff0c;分组设置为 0-1 1-2 2-3 ….. 9-10,(10-11)百分位prctile 示例 prctile(a,15) prctile(a,50) prctile(a,75) 意义 求出a向量或矩阵…

Heroku和Java –从新手到初学者,第2部分

问题 所以过了几天&#xff0c;我可以回到我的Recaps小项目。 我从检查日志开始&#xff0c;发现了以下内容&#xff1a; 2012-03-04T01:52:5100:00 heroku[web.1]: Idling 2012-03-04T01:52:5300:00 heroku[web.1]: Stopping process with SIGTERM 2012-03-04T01:53:0300:00 …

global.min.css,css3-媒体查询样式不覆盖原始样式

我正在尝试对正在建立的网站使用一些媒体查询。 但是&#xff0c;我遇到的问题是&#xff0c;实际上正在应用媒体查询样式时&#xff0c;它们却被覆盖了。 我无法告诉我原因&#xff0c;因为我使用的是相同的选择器。 谁能指出我没看到的东西&#xff1f;原始CSS#global-wrappe…

CSS margin 外边距 属性的位置关系

padding&#xff1a;内边距margin &#xff1a;外边距 margin:10px; 所有 4 个外边距都是 10px ******************************************* margin:10px 5px; 上外边距和下外边距是 10px右外边距和左外边距是 5px ******************************************** margin:10px…

windows无法连接到某个wifi_windows无法连接到无线网络怎么办【解决方法】

无论是win7、win8还是win10系统的电脑&#xff0c;人们在使用它的时候&#xff0c;总会先开机&#xff0c;然后再去连接无线网络。当然&#xff0c;在连接的过程中也可能产生各种各样的问题&#xff0c;例如说无法正常连接到无线网络。常见的原因有密码输入错误&#xff0c;或者…

C语言博客作业--字符数组

一、PTA实验作业 题目1&#xff1a;7-1 字符串转换成十进制整数 1. 本题PTA提交列表 2. 设计思路 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明。 这个问题我看了好久&#xff0c;试了很多的的错误点&#xff0c;答案和我预料的一样&#xff0c;所以我重新看了一遍…

微信公招访问我服务器的那个端口,查看谁在使用某个网络端口

可以通过"netstat -anp" 来查看哪些端口被打开。(注&#xff1a;加参数-n会将应用程序转为端口显示&#xff0c;即数字格式的地址&#xff0c;如&#xff1a;nfs->2049, ftp->21&#xff0c;因此可以开启两个终端&#xff0c;一一对应一下程序所对应的端口号)若…

Java 7 Update 21安全改进的详细信息

甲骨文昨天发布了三个Java更新 。 重要的是要注意它们包含一些与安全性相关的更改。 一段时间以来&#xff0c;已经宣布了其中的大多数更改&#xff0c;并且首先要注意的是Oracle按计划交付。 甲骨文公司Java平台安全经理Milton Smith最近在DevoxxUK上做了题为“ 用Java保护…

css中px、em和rem的区别总结

前言 em 和 rem 都是灵活可扩展的单位&#xff0c;由浏览器转换为像素值&#xff0c;取决于设计中的字体大小&#xff0c;如果使用值 1em 或 1rem &#xff0c;它可以被浏览器转换为从 16px 到 160px 或其他任意值。浏览器使用 1px &#xff0c;那么 1px 始终显示为完全 1px。…

du的原理 linux_Linux 文件系统管理

1、文件系统介绍1&#xff09;、Linux 文件系统特性super block&#xff08;超级块&#xff09;记录整个文件系统的信息。包括 block 与 inode 的总量&#xff0c;已经使用的 block 和 inode 的数量&#xff0c;未使用的 block 和 inode 的数量&#xff0c;block 与 inode 的大…

看病

看病 链接&#xff1a;http://ybt.ssoier.cn:8088/problem_show.php?pid1371时间限制: 1000 ms 内存限制: 65536 KB【题目描述】 有个朋友在医院工作&#xff0c;想请BSNY帮忙做个登记系统。具体是这样的&#xff0c;最近来医院看病的人越来越多了&#xff0c;因此很多…