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

jsr250-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

jsr250-api

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

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

相关文章

上传至GitHub

在工作目录下&#xff1a; git init git status git add . git commit -m"IndoorLocation" git status git remote add origin githttps://github.com/HiSunny/HelloInLoc.git git pull https://github.com/HiSunny/HelloInLoc.git master git push https://…

弹簧和线程:事务

为了能够在我们的线程中使用事务&#xff0c;我们需要了解事务如何在spring中工作。 spring中的事务信息存储在ThreadLocal变量中。 因此&#xff0c;这些变量特定于单个线程上正在进行的事务。 当涉及由单个线程运行的动作时&#xff0c;事务将在分层调用的Spring组件之间传播…

eclipse误删文件

右键工程--->restore from local history

Activity的LaunchMode和taskAffinity

Thanks to:http://www.cnblogs.com/SteveMing/archive/2012/04/24/2459575.html 【原】Activity的LaunchMode和taskAffinity 做项目到现在都一直没有理解LaunchMode有什么用&#xff0c;或许根本就没真正花心思去看&#xff0c;所以今天把这部分整理下。 设置Activity的Launc…

RelativeLayout重要属性

RelativeLayout用到的一些重要的属性&#xff1a;第一类:属性值为true或falseAndroid:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中android:layout_centerI…

gradle spring_使用Gradle的简单Spring MVC Web应用程序

gradle spring除了我们现在将使用Spring MVC而不是原始servlet之外&#xff0c;该文章将与我们之前的文章Simple Gradle Web Application相似。 使用Gradle运行基本的Spring MVC应用程序确实很容易。 您可以在Github上下载本教程的源代码。 先决条件 安装Gradle 我们的基本项…

绘制Nine-Patch图片

Android sdk----->tools----->draw9patch.bat 打开draw9patch.bat文件 File--》open 0-patch将要绘制的.png图片加载进来 ctrl 图片边缘点击鼠标左键 绘制出线条&#xff0c;表示图片需要被拉伸的部分 File--save 9-patch 文件名pp.9.png。

jms spring_JMS和Spring:有时很重要的小事情

jms springJmsTemplate和DefaultMessageListenerContainer是用于访问JMS兼容MOM的Spring帮助器。 他们的主要目标是在JMS API之上形成一层&#xff0c;并处理诸如事务管理/消息确认之类的基础结构&#xff0c;并隐藏JMS API的某些重复和笨拙的部分&#xff08;保留在那里&#…

重温1 Android系统架构及版本

1、Linux内核层(Linux Kernel) 为Android设备的各种硬件提供了底层驱动&#xff0c;Display Driver/Camera Driver/Bluetooth Driver/Flash Memory Driver/Binder(IPC)Driver/USB Driver/Keypad Driver/WiFi Driver/Audio Drivers/Power Management 2、Libraries/Android Run…

REST资源何时应获得其自己的地址?

在纯粹的REST方法中&#xff0c;所有端点&#xff08;起始端点除外&#xff09;都是不透明的&#xff0c;不需要发布其各种详细信息。 即使使用这种方法&#xff0c;本文中的要点也很重要&#xff0c;因为服务器逻辑将必须确定何时需要结束点。 介绍 在REST体系结构中&#xf…

重温2 在Activity中使用Menu

1、引用string.xml中的字符串 1) 代码中 R.string.hello_world 2) XML中string/hello_world 2、AndroidManifest <activityandroid:name".MainActivity"android:label"string/app_name" ><intent-filter><action android:name"andr…

玩转大数据22:常见的关联规则挖掘算法

引言 关联规则挖掘是数据挖掘中的一种重要技术&#xff0c;主要用于发现数据集中项之间的有趣关系。关联规则挖掘在许多领域都有广泛的应用&#xff0c;如市场篮子分析、推荐系统等。常见的关联规则挖掘算法包括Apriori算法和FP-Growth算法。 一、Apriori算法 关联规则挖掘是…

重温3 Activity Intent 向下传递数据 向上传递数据

1、使用Intent向下传递数据 Intent intent new Intent(MainActivity.this,SecongActivity.class); intent.putExtra("data_from_MainActivity","I am MainActivity"); startActivity(intent);从SecondActivity取数据 Intent intent getIntent(); String …

junit 循环测试_重复运行JUnit测试而没有循环

junit 循环测试最近&#xff0c;我遇到了一个问题&#xff0c;我不得不编写一种方法的测试&#xff0c;该方法需要计算在一定可能性范围内的随机分布值1 。 更准确地说&#xff0c;如果您假设签名看起来像 interface RandomRangeValueCalculator {long calculateRangeValue( l…

Java 9:欢迎来到Module World

Java 9已于9月21日正式发布&#xff0c;Eclipse从Eclipse Oxygen.1a&#xff08;4.7.1a&#xff09;支持Java 9&#xff0c;让我们进入模块世界。 从此处下载Java 9&#xff0c;然后将其添加到Eclipse Installed JRE中&#xff0c;如下所示 就是这样&#xff0c;我们很高兴在…

重温5 UI开发

public class TextView extends View implements ViewTreeObserver.OnPreDrawListenerjava.lang.Object ↳android.view.View ↳android.widget.TextView Known Direct Subclasses Button,CheckedTextView,Chronometer,DigitalClock,EditText,TextClockButtonRepresents a…

JWT令牌的秘密轮换

当您使用JSON Web令牌 &#xff08; JWT &#xff09;或需要对有效载荷信息进行签名或加密的任何其他令牌技术时&#xff0c;设置令牌的到期日期很重要&#xff0c;因此&#xff0c;如果令牌到期&#xff0c;则可以假定这可能被视为安全漏洞&#xff0c;您拒绝使用此令牌进行任…

重温6 ListView相关|单位dp/sp

dp:密度无关像素。 sp&#xff1a;可伸缩像素。解决文字大小适配问题。 密度&#xff1a;Android中的密度即屏幕每英寸所包含的像素数&#xff0c;通常以dpi为单位&#xff0c;例如一个宽2英寸长3英寸手机屏幕&#xff0c;若分辨率为320*480&#xff0c;则屏幕密度为320dpi。…

重温7 布局相关

1、LinearLayout 可以在控件中使用&#xff1a; android:layout_weight"1" android:layout_width"0dp"设置控件占屏幕宽度&#xff0c;上表示占屏幕1/2。 2、TableLayout <TableLayout android:stretchColums"1" ...>上指定为1表示拉伸第…

wso2 esb_通过运行示例从WSO2 ESB开始

wso2 esb我最近加入了一个新任务&#xff0c;我们必须基于WSO2工具栈实施ESB解决方案。 尽管我熟悉ESB的大多数概念以及其他一些实现&#xff08;例如Mule ESB &#xff09;&#xff0c;但这是我第一次必须使用WSO2 ESB 。 幸运的是&#xff0c;有很多文档可以找到&#xff0c;…