博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
集成JAX-RS和JSON-P
阅读量:5786 次
发布时间:2019-06-18

本文共 2141 字,大约阅读时间需要 7 分钟。

版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/49998643

集成JAX-RS和JSON-P

作者: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)规范详见

JSR 367: Java API for JSON Binding (JSON-B)规范详见

二、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见:

JsonArray见:
JsonStructure见:

三、例子

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规范:

你可能感兴趣的文章
我的友情链接
查看>>
mysql-error 1236
查看>>
sshd_config设置参数笔记
查看>>
循序渐进Docker(一)docker简介、安装及docker image管理
查看>>
jsp页面修改后浏览器中不生效
查看>>
大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(四)高效的后台权限判断处理...
查看>>
信号量实现进程同步
查看>>
Spring4-自动装配Beans-通过构造函数参数的数据类型按属性自动装配Bean
查看>>
win10.64位wnmp-nginx1.14.0 + PHP 5. 6.36 + MySQL 5.5.59 环境配置搭建 结合Thinkphp3.2.3
查看>>
如何查看python selenium的api
查看>>
Python_Mix*random模块,time模块,sys模块,os模块
查看>>
iframe刷新问题
查看>>
数据解码互联网行业职位
查看>>
我所见的讲的最容易理解,逻辑最强的五层网络模型,来自大神阮一峰
查看>>
vue-cli项目打包需要修改的路径问题
查看>>
js实现复选框的操作-------Day41
查看>>
数据结构化与保存
查看>>
[SpringBoot] - 配置文件的多种形式及优先级
查看>>
chrome浏览器开发者工具之同步修改至本地
查看>>
debian7 + wheezy + chromium + flashplayer
查看>>