找回密码
 立即注册
查看: 462|回复: 0

[前端] JSONPath使用指南 - 掌握JSON数据提取

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-6-7 11:34:45 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-6-9 14:03 编辑

1. 引言

在现代编程中,JSON(javaScript Object Notation)是一种广泛使用的数据格式。它以简洁和易于理解的特性,成为数据交换的标准格式。然而,处理复杂的JSON结构时,提取特定数据可能变得困难。JSONPath作为一种强大的工具,可以简化这个过程。本文将详细介绍JSONPath的使用方法,并通过实例演示其强大功能。

1.1 什么是JSONPath

JSONPath是一种用于查询JSON数据的表达语言,类似于XPath在XML中的作用。它允许开发者使用类似路径的语法,便捷地定位和提取JSON数据。

1.2 JSONPath的基本语法

JSONPath的语法灵活多样,常用的表达方式包括:

(1) `$`:表示根元素。例如,`$.store`表示JSON数据中的store属性。

(2) `.` 或 `[]`:表示子元素。例如,`$.store.book[0]`表示store属性下第一个book元素。

(3) `*`:通配符,表示所有元素。例如,`$.store.book`表示store属性下所有的book元素。

(4) `..`:递归搜索,表示所有层级的子元素。例如,`$..author`表示所有层级中的author属性。

(5) `?()`:过滤表达式。例如,`$.store.book[?(@.price < 10)]`表示store属性下价格小于10的book元素。

1.3 JSONPath的优势

使用JSONPath的主要优势包括:

(1) 简洁:通过简单的路径语法,可以快速定位和提取所需数据。

(2) 灵活:支持多种查询方式,包括条件过滤和通配符搜索。

(3) 可读性强:路径语法直观明了,易于理解和维护。

2. JSONPath使用实例

以下通过几个具体实例,展示如何使用JSONPath提取JSON数据。

2.1 示例一:提取简单属性

假设有以下JSON数据:

  1. {
  2.   "store": {
  3.     "book": [
  4.       {
  5.         "category": "fiction",
  6.         "author": "Herman Melville",
  7.         "title": "Moby Dick",
  8.         "price": 8.99
  9.       },
  10.       {
  11.         "category": "fiction",
  12.         "author": "J.R.R. Tolkien",
  13.         "title": "The Lord of the Rings",
  14.         "price": 22.99
  15.       }
  16.     ],
  17.     "bicycle": {
  18.       "color": "red",
  19.       "price": 19.95
  20.     }
  21.   }
  22. }
复制代码


使用JSONPath提取所有书籍的作者:

  1. $.store.book.author
复制代码


结果为:

  1. [
  2.   "Herman Melville",
  3.   "J.R.R. Tolkien"
  4. ]
复制代码


2.2 示例二:条件过滤

提取价格小于10的所有书籍:

  1. $.store.book[?(@.price < 10)].title
复制代码


结果为:

  1. [
  2.   "Moby Dick"
  3. ]
复制代码


2.3 示例三:递归搜索

提取所有层级中的价格:

  1. $..price
复制代码


结果为:

  1. [
  2.   8.99,
  3.   22.99,
  4.   19.95
  5. ]
复制代码


3. JSONPath的高级用法

在实际应用中,JSONPath的高级用法可以进一步提升数据提取的效率和灵活性。

3.1 多条件查询

可以使用逻辑运算符进行多条件查询。例如,提取价格小于20且类别为fiction的书籍标题:

  1. $.store.book[?(@.price < 20 && @.category == 'fiction')].title
复制代码


3.2 子集提取

提取书籍数组中的前两个元素:

  1. $.store.book[0:2]
复制代码


结果为:

  1. [
  2.   {
  3.     "category": "fiction",
  4.     "author": "Herman Melville",
  5.     "title": "Moby Dick",
  6.     "price": 8.99
  7.   },
  8.   {
  9.     "category": "fiction",
  10.     "author": "J.R.R. Tolkien",
  11.     "title": "The Lord of the Rings",
  12.     "price": 22.99
  13.   }
  14. ]
复制代码


4. 总结

JSONPath是一种强大且灵活的JSON数据提取工具。通过本文的介绍,我们了解了JSONPath的基本语法和常见用法,并通过实例演示了其强大功能。掌握JSONPath的使用,可以大大提升我们处理JSON数据的效率和灵活性,为开发工作带来极大便利。





/ 荔枝学姐de课后专栏 /

Hi!这里是荔枝学姐~

欢迎来到我的课后专栏

自然语言学渣 NLP摆烂姐

热衷于技术写作 IT边角料

AIGC & Coding & linux ...

~互撩~ TG: @Shaw_0xyz

荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-4 13:34 , Processed in 0.060860 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表