集成JAX-RS和JSON-P
来源:互联网 发布:淘宝网店店铺名称大全 编辑:程序博客网 时间:2024/04/30 15:43
集成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数组
@GETpublic JsonArray buildJsonArray(){ return Json.createArrayBuilder().add("jsonp").add("jaxrs").build();}
2、从客户端接收JSON数据
@POSTpublic 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
- 集成JAX-RS和JSON-P
- WebService JAX-WS和JAX-RS
- Java JAX-WS和JAX-RS webservice
- Java JAX-WS和JAX-RS webservice
- Spring Boot 集成 resteasy篇 — jax-rs初步介绍和spring boot集成
- JAX-RS和spring整合
- JAX-RS之jackson去处理json
- JAX-RS 服务接受json转换对象
- JAX-RS
- JAX-RS
- JAX-RS
- JAX-RS
- JAX-RS
- JAX-RS
- JAX-RS
- JAX-RS
- JAX-RS
- JAX-RS 和 和 Spring 整合开发
- sed 简明教程
- Android开发屏幕适配全攻略
- 11.23工作日志
- cordova学习笔记
- iOS- 详解文本属性Attributes
- 集成JAX-RS和JSON-P
- WCF异步调用模式
- 虚幻4随笔4 从工程开始
- Python中的类方法和静态
- Oracle Interval-Partition 解决Range分区大难题
- 如果Java 失宠于Oracle,那么未来会怎么样?
- 实习整理(十二)
- ios图片加水印或文字
- mac下安装启动Mongodb