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的代码。

原始推文

新的#100DaysOfJavaEE8挑战! 给定JSON,应用JSON-P 1.1中的Pointer功能会得到什么结果? #JavaEE8 #Java @Java_EE pic.twitter.com/2crmLu5wmK

-Alex Theedom(@alextheedom) 2017年10月8日

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

JSON处理1.1:100DaysOfJavaEE8相关推荐

  1. 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)

    目录[阅读时间:约5分钟] 一.概述 1.Json的作用 2.Go官方 encoding/json 包 3. golang json的主要操作 二.Json Marshal:将数据编码成json字符串 ...

  2. Go 知识点(04)— 结构体字段转 json格式 tag 标签的作用

    我们知道在 Go 语言中无论是变量.常量还是函数,对于首字母大小写有不同的处理. 首字母大写,标志着该字段或者函数是能导出的,也就是可以被其它包所能访问的: 首字母小写,标志着该字段是私有的,只能在本 ...

  3. VS Code 配置调试参数、launch.json 配置文件属性、task.json 变量替换、自动保存并格式化、空格和制表符、函数调用关系、文件搜索和全局搜索、

    1. 生成配置参数 对于大多数的调试都需要在当前项目目录下创建一个 lanch.json 文件,位置是在当前项目目录下生成一个 .vscode 的隐藏文件夹,在里面放置一些配置内容,比如:settin ...

  4. Python 标准库之 json

    1. josn 定义 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.JSON的数据格式其实就是python里面的字典格式,里面可以包含 ...

  5. python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)

    前言 之前在实际的项目研发中,需要对一些复杂的json数据进行取值操作,由于json数据的层级很深,所以经常取值的代码会变成类似这样: value = data['store']['book'][0] ...

  6. 数据库里存json数据

    需求: 查询上个月每个人各个插件的总加分汇总为一个json存储到一个字段里 查询上个月每个组织机构插件的各个插件的总加分汇总为一个json存储到一个字段里 流程: 查询后返回结果是一个List集合,每 ...

  7. http传输json文件_python

    https://cloud.tencent.com/developer/article/1571365 http传输图片 https://www.cnblogs.com/jruing/p/122156 ...

  8. python:Json模块dumps、loads、dump、load介绍

    20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...

  9. dataframe 转json

    20210810 字符串转换为字典的时候,如果没有引号会报找不到 这个名称 字符串类型变字典 本身含有字典的括号 列表里面本身要是字典类型 才能通过此方法 把列表转换为dataframe # 格式检查 ...

最新文章

  1. Spring——Spring工具类
  2. Dockerfile 指令详解2
  3. IOS开发基础之大转盘案例
  4. fetch 自动加cookie_WEBUI自动化开发(第五章)
  5. .NET6之MiniAPI(二十七):Metrics
  6. 【ArcGIS微课1000例】0005:空间连接(Spatial Join)
  7. 八类网线和七类网线的区别_什么是七类网线?七类网线水晶头如何制作?
  8. 分享几个可供学习,休闲的网站
  9. ruoyi 多模块部署_大数据时代,独立部署的商城系统具有哪些优势?
  10. JAVA进阶开发之(数组练习题)
  11. VMware安装虚拟机并使用NAT模式连接网络
  12. MongoDB解决“Error parsing YAML config file: yaml-cpp: error at line 2, column value(安装服务)
  13. linux系统修改用户名密码忘记,Linux下修改/找回root密码
  14. linux动态时钟探索
  15. SQL连接表(内连接、左连接、右连接、交叉连接、全外连接)
  16. 2021年危险化学品经营单位安全管理人员考试题及危险化学品经营单位安全管理人员模拟试题
  17. matlab中创建txt文件,在MATLAB中创建填充了任意数据的大型txt文件
  18. vscode如何快捷键一键生成vue模板
  19. 同步,异步,直流电机原理
  20. JavaScript浮动广告

热门文章

  1. MYSQL 入门全套
  2. 深入浅出 Java 中的包装类
  3. 3 年 Java 应该具备的技能体系
  4. 6 道 BATJ 必考的 Java 面试题
  5. java实现人脸识别源码【含测试效果图】——DaoImpl层(UserDaoImpl)
  6. JS中关于能不能加分号
  7. 河北省计算机对口高考大纲,河北省普通高等学校对口招生英语考试大纲
  8. asset文件夹路径 unity_我们来捣鼓一下Unity的平台跳跃Microgame
  9. rabbitmq生产者基于事务实现发送确认
  10. 转-Kafka【第一篇】Kafka集群搭建