JSON指针:JSON-P 1.1概述系列

本文介绍了JSON-P 1.1,它是Java EE 8中更新的JSON处理API之一,遵循最新的IEFT标准。JSON-P提供了JsonPointer接口,用于创建指向JSON文档元素的表达式,实现检索、添加、删除和替换值的功能。文章详细展示了如何使用JsonPointer进行各种操作,如检索值、增值、删除值和替换值。
摘要由CSDN通过智能技术生成

Java EE 8包括对JSON处理API的更新,并使其与JSON的最新IEFT标准保持同步。 他们是:

  • JSON指针 (RFC 6901)
  • JSON修补程序(RFC 6902)
  • JSON合并补丁(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指针

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元素。 然后,它将调用getValue()方法,该方法将传递给JsonObject进行查询。

JsonValue jsonValue = Json.createPointer("/title").getValue(jsonObject);

增值

要向JSON文档添加(或插入)值,请遵循与检索相同的逻辑,即使用JSON指针表达式来标识文档内的插入点。 以下代码段将新的“类别”:“编程” 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处理的新功能的第一篇文章。 目前为止就这样了。

翻译自: https://www.javacodegeeks.com/2018/04/get-to-know-json-pointer-json-p-1-1-overview-series.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值