集成JAX-RS和JSON-P
2015-11-23 17:38
549 查看
集成JAX-RS和JSON-P
作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs一、JSON-P和JSON-B介绍
在Java EE 7中引入了JSON Processing API,即JSON-P规范。JSON-P规范定义了一套标准的API来操纵JSON数据,这一点与JAXP规范相似(操纵XML的API规范)。在Java EE 8中还将引入JSON Binding API,即JSON-B规范。JSR 353: Java API for JSON Processing (JSON-P)规范详见 http://jcp.org/en/jsr/detail?id=353
JSR 367: Java API for JSON Binding (JSON-B)规范详见 https://www.jcp.org/en/jsr/detail?id=367
二、JAX-RS 2.0支持JSON-P
JAX-RS 2.0规范是Java EE 7规范的一部分,它同时也支持JSON-P规范,比如对JsonObject类、JsonArray类、JsonStructure类等提供了开箱即用的支持。每一个兼容JAX-RS 2.0规范的参考实现都提供了内建的支持以上类的实体Provider,使得JAX-RS应用程序可以轻松简单地交换JSON数据。JsonObject见: https://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html
JsonArray见: https://docs.oracle.com/javaee/7/api/javax/json/JsonArray.html
JsonStructure见: https://docs.oracle.com/javaee/7/api/javax/json/JsonStructure.html
三、例子
1、从JAX-RS资源方法发散JSON数组
@GET public JsonArray buildJsonArray(){ return Json.createArrayBuilder().add("jsonp").add("jaxrs").build(); }
2、从客户端接收JSON数据
@POST public void acceptJsonObject(JsonObject payload){ System.out.println("the payload -- "+ payload.toString()); }
3、JsonObject使用的例子
1)JSON数据如下{ "firstName": "John", "lastName": "Smith", "age": 25, "address" : { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021" }, "phoneNumber": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] }
2)构建JsonObject
JsonObject value = Json.createObjectBuilder() .add("firstName", "John") .add("lastName", "Smith") .add("age", 25) .add("address", Json.createObjectBuilder() .add("streetAddress", "21 2nd Street") .add("city", "New York") .add("state", "NY") .add("postalCode", "10021")) .add("phoneNumber", Json.createArrayBuilder() .add(Json.createObjectBuilder() .add("type", "home") .add("number", "212 555-1234")) .add(Json.createObjectBuilder() .add("type", "fax") .add("number", "646 555-4567"))) .build();
四、值得注意的情况
1、无需编写自定义的MessageBodyReader类或MessageBodyWriter类的实现,正如前面提到的,JAX-RS规范提供了这些API。2、使用注释绑定JSON方法的方式目前还不支持(类似于在POJOs类上使用JAXB注释),等未来的版本吧。GlassFish 4.1 (Jersey)和Wildfly 8.x (RESTEasy)已经支持了注释绑定JSON方法,但这种使用方式还不是标准,应注意这一点。
五、参考
1、官方JAX-RS规范: https://jcp.org/aboutJava/communityprocess/final/jsr339/index.html相关文章推荐
- JS技术大全(防止复制,粘贴等)
- js 语法
- 这些年,我收集的JavaScript代码(一)
- google map api v3 中markerwithlabel.js更新的使用
- c3.js 文档翻译(一)
- mvc视图中使用JavaScriptSerializer
- js常用工具
- SuperMap iClient for JavaScript 之关联查询
- js获取100个随机数存入数组
- 自定义JSP的 JSTL标签函数过程
- 原生js ajax
- JS数据类型转换
- selenium web driver 使用JS修改input属性
- JS页面跳转和js对iframe进行页面跳转、刷新
- JavaScript中的设计模式:单例模式
- 关于table里面的checkbox选择无效的问题
- 服务器返回的list,map等类型,在JSP中取长度、取值的方法
- JS鼠标拖拽实例分析
- js生成[n,m]的随机数
- JS中自定义List