Java EE 8 JSON Pointer讲解

编程教程 > WEB > JavaScript (7183) 2024-11-26 14:39:04
Java EE 8包含JSON处理API的更新,并为最新的JSON标准提供最新的IEFT标准。他们是:
  • JSON Pointer (RFC 6901)
  • JSON Patch (RFC 6902)
  • JSON Merge Patch (RFC 7396)
 

入门

要开始使用JSON-P,您需要Maven中央存储库中的以下依赖项。

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.1</version>
</dependency>

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1</version>
</dependency>

JSON-Pointer

JSON指针定义了一个字符串表达式,该表达式引用JSON文档的层次结构内的元素。通过JSON指针表达式,您可以通过检索,添加,删除和替换由表达式引用的元素或值来访问和操作JSON文档。

入口API是javax.json.JsonPointer接口。通过调用javax.json.Json  类上的静态工厂方法createPointer(String expression)并将其传递给指针表达式来创建实例。

检索一个值

如果下面给出了JSON文档,并且您想要检索title元素的值,则可以创建JSON指针表达式  /title

{
"title": "Java EE: Only What's New",
"author": "Alex Theedom",
"chapters": [
  "Chapter 1: Java EE 8 What’s New Overview",
  "Chapter 2: Java API for JSON Binding 1.0 (JSR 367)",
  "Chapter 3: Java EE Security API 1.0 (JSR 375)"
],
"released": true,
"pages": 300,
"sourceCode": {
  "repositoryName": "Java-EE-8-Only-Whats-New",
  "url": "github.com/readlearncode/"
},
"otherBooks": [
  {
    "title": "Professional Java EE Design Patterns",
    "length": 350
  }
]
}
JsonObject jsonObject = ... create JSONObject from JSON document ...;
下面的代码片段创建一个JsonPointer 并引用title 元素。然后它调用传递JsonObject来查询的getValue()方法。
JsonValue jsonValue = Json.createPointer(“/ title”)。getValue(jsonObject);

添加一个值

要向JSON文档添加(或插入)值,请遵循与检索相同的逻辑,方法是使用JSON指针表达式来标识文档中的插入点。以下代码片段将新的“category”:“Programming JSON对象添加到文档的根目录。

JsonObject jsonObject = Json
      .createPointer("/category")
      .add(jsonObject, Json.createValue("Programming"));

返回的JsonObject 是整个新的修改对象。

删除一个值

删除过程需要将删除的值的位置表示为JSON指针表达式。下面的代码片段删除title 元素,并将修改的JSON文档作为JsonStructure 实例返回

JsonStructure jsonStructure = Json.createPointer(“/ title”)。remove(jsonObject);

替换一个值

要替换要替换的元素的JSON指针表达式,并将替换元素传递给replace()方法。下面的代码片段替换title 元素的值并返回修改后的JSON文档。

JsonStructure jsonStructure = Json
     .createPointer("/title")
     .replace(jsonObject, Json.createValue("Java EE 8"));

测试一个值

可以使用containsValue() 方法测试某个位置存在的值。下面的代码片段测试以查看它在由JSON指针表达式/ doesNotExist表示的位置处有一个值。

Boolean containsValue = Json
     .createPointer("/doesNotExist")
     .containsValue(jsonObject);

总结结

上面这些,这就是关于JSON Processing新功能的第一篇文章。


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
Java EE 8 JSON Pointer讲解,Java EE 8包含JSON处理API的更新,并为最新的JSON标准提供最新的IEFT标准。
java json字符串转对象_json转换为java对象_ json字符串转对象数组
java编程中使用nodejs的apidoc工具生成Java api美观的HTML文档,apidoc可以根据代码注释生成web api文档,支持大部分主流语言
Java编程之Spring Boot中使用jsp视图模板
fastJSON字符串类型数据中的日期转换为Java bean的日期对象
Java生成密钥对采用hutool工具生KeyPair keyPair = SecureUtil.generateKeyPair("RSA"); PrivateKey aPrivate = k...
引言AES代表高级加密系统,它是一种对称加密算法
前言值得一提的是JSON只有数组数据类型
jsp中/el表达式中将后台传来的时间戳格式化为年月日时分秒1.引入相关标签库&lt;%@taglib prefix="c" uri="http://java.sun
json-path 组件使用java 版 jsonpath引入依赖        &lt;dependency&gtl;            &lt;groupId&gtl;com.jay...
Log4j 2 简介       Apache Log4j 2是对Log4j 1.x的升级,相对于其先前版本进行了重大改进,例如性能改进,自动重新加载已修改的配置文件,java 8 lambda...
在vue2.0中使用了axios库,设置请求头Content-Type='application/json;charset=UTF-8'无效axios.defaults.headers.comm...
       学习使用Gson JsonReader类,这是一个基于拉的流式JSON解析器,它有助于将JSON作为标记流来读取​GSON1. JsonReader是什么JsonReader是流式...
httpclient4.5使用详解 httpclient 4.5 post传递json参数
偶然遇到一个spring boot 的接口错误,Content type 'application/json;charset=UTF-8' not supported经过排查发现是参数里面的对象...