二、Python:Jsonpath语法、使用方法详细介绍及使用Python操作JSON代码示例

原本想使用API帮我写一篇关于JSONPATH的文章,但是AI写出来的文章有不少错误,所以本篇JSONpath的内容是基于AI写的文章的基础之上做的修改。

JSONPATH是一种路径表达式语言(访问和操作JSON数据的语言),用于查询特定的JSON格式数据。它提供了一种简单、有效的方法来定位JSON文档中的元素,并支持基本的查询、筛选和操作。它类似于XPath,但是针对JSON对象而不是XML文档。它支持选择器、过滤器和函数等功能,能够方便地从JSON数据中提取所需信息。

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

在本文中,我们将深入了解JSONPATH语法和用法和工作原理,以及如何使用它来处理JSON数据。

注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料,将在公众号CTO Plus发布,请关注公众号:CTO Plus

 

 

1. 语法

JSONPATH的语法非常简单和直观。它使用点号(.)和方括号([])来访问JSON对象的属性和数组元素。下面是一些常用的JSONPATH语法:

  1. $:根节点,也是所有jsonpath表达式的开始
  2. .:访问属性,表示获取子节点
  3. ..: 表示获取所有符合条件的内容
  4. []:访问数组元素,表示迭代器的标示(可以用于处理下标等情况)
  5. [,] 表示多个结果的选择
  6. *:通配符,匹配任何属性或数组元素,代表所有的元素节点
  7. @:当前节点
  8. ?():表示过滤操作
  9. $.property:访问JSON对象的属性值。例如,$表示JSON根对象,$.name表示根对象的name属性值。
  10. $[index]:访问JSON数组的元素值。例如,$[0]表示数组的第一个元素。
  11. $.property[index]:访问JSON对象中的数组元素。例如,$.students[0]表示对象的students属性中的第一个元素。
  12. $.property[*]:访问JSON对象中的所有数组元素。例如,$.students[*]表示对象的students属性中的所有元素。
  13. $.property.*:访问JSON对象中的所有子属性。例如,$.student.*表示对象的student属性中的所有子属性。
  14. $.property1.property2:访问JSON对象中的嵌套属性。例如,$.student.name表示对象的student属性中的name属性值。

2. 用法

JSONPATH可以用于许多场合,例如:

- 在JavaScript中访问和操作JSON数据。

- 在REST API中过滤和排序JSON数据。

- 在测试框架中验证JSON数据。

如果要基于JsonPath来处理json数据,就一定要去同步处理list。JsonPath定义中,如果表达式出现错误,则会返回False(布尔类型的值),JsonPath要么返回False,要么返回list。

下面是一些常见的JSONPATH用法及示例:

示例1:获取JSON对象中的某个属性值

例如,我们有以下JSON数据:

{
  "name": "John",
  "age": 30
}

要获取name属性的值,可以使用JSONPATH表达式$.name。

示例2:获取JSON数组中的某个元素

例如,我们有以下JSON数据:

{
  "students": [
    {
      "name": "John",
      "age": 30
    },
    {
      "name": "Mary",
      "age": 25
    }
  ]
}

要获取数组中的第一个元素,可以使用JSONPATH表达式$.students[0]。

示例3:使用通配符*获取JSON数组中的元素

例如,假设我们有以下JSON数据:

{
  "name": "John",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA",
    "zip": "12345"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "555-1234"
    },
    {
      "type": "work",
      "number": "555-5678"
    }
  ]
}
  • $.name:访问根节点下的name属性
  • $.address.city:访问根节点下的address属性下的city属性
  • $.phoneNumbers[0].number:访问根节点下的phoneNumbers数组的第一个元素的number属性
  • $.phoneNumbers[*].type:访问根节点下的phoneNumbers数组的所有元素的type属性

JSONPATH的过滤器

JSONPATH还支持使用过滤器来对JSON数据进行更精细的查询和过滤。过滤器使用方括号([])中的表达式来指定要过滤的条件。下面是一些常见的过滤器:

  • ==:等于
  • !=:不等于
  • <:小于
  • <=:小于或等于
  • >:大于
  • >=:大于或等于
  • =~:正则表达式匹配
  • !~:不匹配正则表达式

示例4:过滤JSON数组中的元素

例如,我们可以使用以下JSONPATH来查找年龄大于25岁的人的姓名:

$.name[?(@.age > 25)]

这里,我们使用了过滤器[?(@.age > 25)]来指定条件。它将返回一个包含所有年龄大于25岁的人的姓名的数组。

JSONPATH的高级用法

JSONPATH还支持一些高级用法,例如:

  • 使用逗号分隔的表达式来访问多个属性或数组元素
  • 使用括号来指定优先级
  • 使用通配符来访问多个层级的属性或数组元素
  • 使用函数来处理数据,如min、max、sum、avg、length等

示例4:可以使用以下JSONPATH来计算所有电话号码的长度之和

$..phoneNumbers.*.number | length(@)

这里,我们使用了通配符$..phoneNumbers.*.number来访问所有电话号码,然后使用函数length来计算它们的长度之和。注意,我们使用了管道符号(|)来将结果传递给函数length。

总结

JSONPATH是一种非常强大的语言,可以用于查询和过滤JSON数据。它支持访问属性和数组元素,使用过滤器进行条件查询,以及使用函数进行数据处理。了解JSONPATH的基本语法和高级用法是处理JSON数据的关键。


微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveRocket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值