JSON处理1.1:100DaysOfJavaEE8

JSON指针挑战

给定下面代码片段中的JSON文档,使用JSON-P 1.1中的JSON指针功能会得到什么结果?

JSON对象的新形状如下:

{
 "name": "Duke",
 "likes": [
    "Java EE 8",
    "Java",
    "Ice Cream"
 ]
}

什么是JSON指针?

JSON Pointer是JSON Processing 1.1 API中的一项新功能,并将其与最新的IEFT标准JSON Pointer结合 在一起 。 此更新的API构成Java EE 8版本的一部分。

那么,什么是JSON指针?JSON指针定义了一个字符串表达式,该字符串表达式标识JSON文档中的特定值。 它类似于XPointer ,它用于标识XML文档中的片段。

让我们看一个例子。 给定以下JSON文档,将通过JSON指针表达式/ likes / 0来引用likes数组中的第一个元素。

{
 "name": "Duke",
 "likes": [
    "Java",
    "Coffee"
 ]
}

这是指元素值: Java

如何使用JSON指针?

入口API是JsonPointer接口。 通过在Json类上调用静态工厂方法createPointer()创建一个实例。 下面的代码片段创建了一个JsonPointer并引用了likes数组中的第二个元素:

JsonPointer pointer = Json.createPointer("/likes/0");

JsonPointer API还可以通过添加,替换和删除属性来变异JSON文档。 下面的代码段将值“ Java EE 8”添加到喜欢列表:

pointer.add(jsonObject, Json.createValue("Java EE 8"));

并且以下代码段中的代码替换了第三个索引位置的值:

pointer = Json.createPointer("/likes/2");
JsonObject newJsonObject = pointer.replace(jsonObject, Json.createValue("Ice Cream"));

将所有内容放在一起,您将获得代码,这些代码添加了likes数组的元素,并替换了元素。 完整的代码片段如下所示:

JsonObject jsonObject = 
    Json.createReader(new StringReader(target)).readObject();
JsonPointer pointer = Json.createPointer("/likes/0");
jsonObject = pointer.add(jsonObject, Json.createValue("Java EE 8"));
pointer = Json.createPointer("/likes/2");
JsonObject newJsonObject = 
    pointer.replace(jsonObject, Json.createValue("Ice Cream"));

此代码的输出是:

{
 "name": "Duke",
 "likes": [
    "Java EE 8",
    "Java",
    "Ice Cream"
 ]
}

进一步阅读

有关如何使用JSON处理的新功能的更多信息,请在IBM developerWorks上查看我的文章 Java EE 8的新增功能,并且您还应该阅读JSON处理1.1的Java API规范( JSR 374 )。

GitHub储存库

可以在我的GitHub存储库中找到此代码以及所有其他#100DaysOfJavaEE8的代码。

原始推文

翻译自: https://www.javacodegeeks.com/2017/10/json-processing-1-1-100daysofjavaee8.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值