JSON (JavaScript Object Notation) 是一种常用的数据格式,用来存储和传输结构化的数据。在接口自动化中,我们经常需要对返回的 JSON 数据进行解析,以提取需要的信息。JSON Path 是一种用于查询和筛选 JSON 数据的表达式语言,类似于传统编程语言中的 XPath。
本文将从零开始介绍 JSON Path 的基本语法和用法,帮助读者快速上手 JSON 解析。
本文从6个方面来阐述这篇文章
一、JSON Path 基础语法
二、索引和筛选条件
三、基本操作
四、多层级路径
五、高级用法
六、示例
一、JSON Path 基础语法
JSON Path 的基本语法非常简单,使用 "." 来表示层级关系,用 "[]" 来表示索引和筛选条件。
例如,假设有以下 JSON 数据: { "name": "John", "age": 30, "address": { "city": "New York", "state": "NY" }, "hobbies": ["reading", "music", "coding"] }
要提取 name 字段的值,可以使用路径表达式 "$.name",其中 "$" 表示根节点,"." 表示层级关系。
二、索引和筛选条件
如果要提取 hobbies 数组中的第一个元素,可以使用路径表达式 "$.hobbies[0]"。其中 "[0]" 表示索引,表示提取数组中的第一个元素。
如果要提取年龄大于 25 的人的姓名,可以使用路径表达式 "$[?(@.age > 25)].name"。其中 "?(@.age > 25)" 表示筛选条件,表示提取满足年龄大于 25 的对象的姓名。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】
三、基本操作
除了提取字段的值,JSON Path 还支持一些基本操作。
例如,要统计 hobbies 数组中的元素个数,可以使用路径表达式 "$.hobbies.length()"。其中 ".length()" 表示获取数组的长度。
如果要将 name 字段的值转换为大写,可以使用路径表达式 "$.name.toUpperCase()"。其中 ".toUpperCase()" 表示将字符串转换为大写。
四、多层级路径
JSON 数据可能存在多层级的结构,JSON Path 可以通过连接多个 "." 来表示多层级路径。
例如,要提取 address 字段中的 city 值,可以使用路径表达式 "$.address.city"。
五、高级用法
除了基本语法,JSON Path 还支持一些高级用法,如通配符、递归查询等。
通配符 "" 可以用来匹配任意字段或数组元素。例如,路径表达式 "$.address." 可以用来提取 address 字段中的所有值。
递归查询 ".." 可以用来查询所有满足条件的字段或数组元素,无论其层级。例如,路径表达式 "$..name" 可以用来提取所有的 name 字段的值。
六、示例
下面是一个示例,演示如何使用 JSON Path 提取 JSON 数据中的信息。
假设有以下 JSON 数据: { "book": { "title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "genres": ["Fiction", "Classics", "Romance"], "price": 10.99 } }
要提取书名和价格,可以使用路径表达式 "$.book.title" 和 "$.book.price"。
要提取所有的分类,可以使用路径表达式 "$.book.genres"。
要提取第一个分类,可以使用路径表达式 "$.book.genres[0]"。
总结
本文从零开始介绍了 JSON Path 的基本语法和用法。通过学习 JSON Path,我们可以快速准确地提取 JSON 数据中的信息,用于接口自动化测试中的断言和验证。希望本文对读者能有所帮助,如果有任何问题或建议,请随时留言。
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后: 可以在公众号:自动化测试老司机 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!