Java EE 8 JSON Pointer讲解

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(3832)   2023-03-28 11:29:14
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新功能的第一篇文章。

标签: java java ee 8
地址:https://www.leftso.com/article/408.html

相关阅读

Java EE 8 JSON Pointer讲解,Java EE 8包含JSON处理API的更新,并为最新的JSON标准提供最新的IEFT标准。
备受期待的Java Enterprise Edition 8发布了两个令人兴奋的新API(JSON-Binding 1.0和Java EE Security 1.0)并改进了当前的API(JAX...
java8 Function 应用场景 --代码重构旧代码: import org.springframework.beans.BeanUtils; import java.util.func...
Java 8使用多个comparators进行集合分组排序
java8 Function函数编程详解Function函数基础定义和使用 public static void t1(){ Function&lt;Integer,Int...
简介本博文主要讲解在Java 8中 如何通过stream流的方式去重
java 8 stream 多字段排序,本例子主要使用stream进行多个字段的排序,使用了 comparators和Comparator.thenComparing()方法。比较器之间返回一个...
如今,很多应用程序仍然使用API java.util.Date和java.util.CalendarAPI,包括库来使我们的生活更轻松地处理这些类型,例如JodaTime。然而,Java 8引入...
Consumer 源码package java.util.function; import java.util.Objects; @FunctionalInterface public i...
Supplier详解源码分析:package java.util.function; @FunctionalInterface public interface Supplier&lt;T&...