当前位置: 首页 > article >正文

Java|Java 中 JSONPath 的使用

文章目录

    • 概述
    • 1. JSONPath 基础语法
      • 1.1 基本操作符
      • 1.2 常见示例
    • 2. JSONPath 在 Java 中的使用
      • 2.1 依赖配置
      • 2.2 示例代码
        • 示例 JSON 数据
        • Java 代码
        • 运行结果
      • 2.3 解析 JSON 文件
      • 2.4 常见操作
    • 3. 进阶功能
    • 4. 总结

概述

JSONPath 是一种用于从 JSON 数据结构中提取特定元素的查询语言,类似于 XPath 用于 XML。它提供了强大的查询功能,允许用户通过简单的表达式获取 JSON 文档中的特定数据。本文将介绍 JSONPath 的基本语法,并提供在 Java 中如何使用 JSONPath 的示例代码。


1. JSONPath 基础语法

JSONPath 的查询表达式以 $ 开始,表示根元素,支持多种操作符,如 .[]* 和过滤器 [?()] 等,用来进行数据的提取和过滤。

1.1 基本操作符

  • 根节点$ 表示根元素。

  • 成员访问

    • .:直接访问子元素,例如 $.store.book
    • []:使用键或索引进行访问,例如 $['store']['book']
  • 通配符* 用于匹配所有的子元素。例如 $.store.book[*] 匹配所有的书籍元素。

  • 数组操作

    • [index]:选择指定下标的数组元素,例如 $.store.book[0] 选择第一个书籍。
    • [start:end]:选择范围内的数组元素,例如 $.store.book[0:2] 选择前两个书籍。
  • 过滤器[?()] 用于过滤元素。表达式 @ 代表当前元素。例如,$.store.book[?(@.price > 10)] 返回价格大于 10 的书籍。

  • 递归搜索.. 用于递归搜索整个 JSON 结构。例如,$.store..price 会查找所有名为 price 的元素。

1.2 常见示例

给定以下 JSON 数据:

{
   
  "store": {
   
    "book": [
      {
   "category": "fiction", "price": 8.99, "title": "Book 1"},
      {
   "category": "science", "price": 12.99, "title": "Book 2"}
    ],
    "bicycle": {
   "color": "red", "price": 19.95}
  }
}
  • 获取所有书籍的价格:$.store.book[*].price 返回 [8.99, 12.99]
  • 获取价格高于 10 的书籍:$.store.book[?(@.price > 10)].title 返回 ["Book 2"]
  • 获取所有元素中的 price$.store..price 返回 [8.99, 12.99, 19.95]

2. JSONPath 在 Java 中的使用

在 Java 中,可以使用 Jayway 的 JSONPath 实现来处理 JSON 数据。该库支持大多数 JSONPath 功能,并且易于集成和使用。

</


http://www.kler.cn/news/294928.html

相关文章:

  • history增加时间显示
  • PostgreSQL的repmgr工具介绍
  • centos基本命令
  • 店匠科技携手Stripe共谋电商支付新篇章
  • 漫谈设计模式 [14]:迭代器模式
  • 人工智能与机器学习原理精解【16】
  • Mac M1 安装Hadoop教程(安装包安装)
  • keepalived和lvs高可用集群
  • 一次关于生产环境服务无故宕机的排查过程
  • 顶刊精析|METI:整合细胞形态与空间转录组学的肿瘤微环境分析框架·24-09-06
  • MySQL面试题大全和详解,含SQL例子
  • EF框架删除数据
  • Hive是什么?
  • 模型压缩之剪枝
  • Openharmony 图片自适应全屏显示
  • C++系统教程002-数据类型(01)
  • pytorch torch.gather函数介绍
  • 运维工程师面试题--Linux加分项
  • Mysql(一) - 数据库操作, 表操作, CRUD
  • CMU 10423 Generative AI:lec3(阅读材料:GPT1论文解读)
  • 申万宏源证券完善金融服务最后一公里闭环,让金融服务“零距离、全天候”
  • 币安/欧易合约对冲APP系统开发
  • 【BuuCTF】BadySQli
  • C语言 | Leetcode C语言题解之第392题判断子序列
  • 小程序端pinia持久化
  • 2工作队列
  • 如何应对日益复杂的网络攻击?Edge SCDN(边缘安全加速)的应用场景探讨
  • 解决yarn安装依赖报错:certificate has expired at TLSSocket.onConnectSecure
  • 探索 MATLAB 中的 rem 函数:余数计算与应用
  • Find 方法、where 子句以及 AsNoTracking 方法各自有不同的用途和性能