当前位置:   article > 正文

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

jsonpath的用法

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

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

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

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

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数据:

  1. {
  2. "name": "John",
  3. "age": 30
  4. }
'
运行

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

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

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

  1. {
  2. "students": [
  3. {
  4. "name": "John",
  5. "age": 30
  6. },
  7. {
  8. "name": "Mary",
  9. "age": 25
  10. }
  11. ]
  12. }
'
运行

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

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

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

  1. {
  2. "name": "John",
  3. "age": 30,
  4. "address": {
  5. "street": "123 Main St",
  6. "city": "Anytown",
  7. "state": "CA",
  8. "zip": "12345"
  9. },
  10. "phoneNumbers": [
  11. {
  12. "type": "home",
  13. "number": "555-1234"
  14. },
  15. {
  16. "type": "work",
  17. "number": "555-5678"
  18. }
  19. ]
  20. }
'
运行
  • $.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】关注后,获取更多,我们一起学习交流。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/1005482
推荐阅读
相关标签
  

闽ICP备14008679号