集成JAX-RS和JSON-P

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/49998643 集成JAX-RS和JSON-P作者:chszs,未经博主允许不得转载。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/49998643

集成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

目录
相关文章
|
JSON 数据格式
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据 by 页一
1781 0
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据
|
存储 JSON Java
SpringBoot 集成cas5.3 配置及管理JSON Service服务
服务管理(Service Management)就是CAS服务管理工具允许CAS服务器管理员声明和配置哪些服务(Service,CAS客户端)可以在哪些方面使用CAS。服务管理工具的核心组件是服务注册表,它存储一个或多个注册服务。
1281 0
|
Web App开发 JSON 算法
如何在SpringBoot中集成JWT(JSON Web Token)鉴权
这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token)。 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具,首先得知道以下几个问题。
|
JSON 数据格式 JavaScript
|
10月前
|
机器学习/深度学习 JSON 监控
淘宝拍立淘按图搜索与商品详情API的JSON数据返回详解
通过调用taobao.item.get接口,获取商品标题、价格、销量、SKU、图片、属性、促销信息等全量数据。
|
9月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
9月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
9月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。