接口自动化入门:JSON中的万能密码 —— JSON Path解析!

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自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/309782.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯客户端开发实习一面

听说腾讯25年5000offer,我就去了...投完简历,当天晚上做完测评,第二天下午打电话约了第三天面试,额流程很快,快到第三天就寄了... 写在这里做个记录,也可以给学习学妹们经验,文末也有大厂面经合…

【深入理解Java IO流0x09】解读Java NIO核心知识(下篇)

1. NIO简介 在开始前,让我们再简单回顾一下NIO。 在传统的 Java I/O 模型(BIO)中,I/O 操作是以阻塞的方式进行的。也就是说,当一个线程执行一个 I/O 操作时,它会被阻塞直到操作完成。这种阻塞模型在处理多…

火绒安全的用法

火绒安全软件是一款综合性的电脑安全防护工具,提供了病毒查杀、系统防护、网络安全等多种功能,以帮助用户保护电脑免受恶意软件和网络威胁的侵害。以下是火绒安全软件的一些主要用法: 病毒查杀:火绒安全软件提供全盘查杀、快速查杀…

Nvidia DGX 系统分析和探讨

NVIDIA DGX 互联结构 NVIDIA DGX 是Nvidia 推出的turnkey 解决方案,其中按照组合关系: DGX GB200 System: NVL72 36 Nvidia Grace CPU72 BlackWell GPU每台机柜包含18 个GB200 计算节点,每个节点包含2 个GB200s9 个NVSwitches Tray 节点,每个…

MyBatis-Spring整合

引入Spring之前需要了解mybatis-spring包中的一些重要类; http://www.mybatis.org/spring/zh/index.html 什么是 MyBatis-Spring? MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 知识基础 在开始使用 MyBatis-Spring 之前&#x…

Windows本地部署Ollama+qwen本地大语言模型Web交互界面并实现公网访问

文章目录 前言1. 运行Ollama2. 安装Open WebUI2.1 在Windows系统安装Docker2.2 使用Docker部署Open WebUI 3. 安装内网穿透工具4. 创建固定公网地址 前言 本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具,并安装Open WebUI结合cpolar内网穿透软…

刷题之Leetcode24题(超级详细)

24. 两两交换链表中的节点 力扣题目链接(opens new window)https://leetcode.cn/problems/swap-nodes-in-pairs/ 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换…

PNPM 8管理Node版本,卸载了旧版本Node找不到PNPM

前言 用 pnpm env 来管理 node 的版本,安装了新版本之后,卸载了之前的旧版本,调用 pnpm 报错 异常截图 解决方式 从终端获取报错文件到路径,进入编辑修改错误的 node bin 路径为正确的 node 启动路径即可也就是修改 "/Use…

LeetCode-热题100:104. 二叉树的最大深度

题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入: root [3,9,20,null,null,15,7] 输出: 3 示例 2: 输入: root …

实习僧网站的实习岗位信息分析

目录 背景描述数据说明数据集来源问题描述分析目标以及导入模块1. 数据导入2. 数据基本信息和基本处理3. 数据处理3.1 新建data_clean数据框3.2 数值型数据处理3.2.1 “auth_capital”(注册资本)3.2.2 “day_per_week”(每周工作天数&#xf…

Java基于微信小程序的校园外卖平台设计与实现,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

[通俗易懂:Linux标准输入/输出和重定向]Shell脚本之 > /dev/null 2>1命令详解

目录标题 一、> /dev/null 2>&1 命令解析二、/dev/null 文件浅显理解三、标准输入、标准输出、标准错误输出四、输入重定向、输出重定向五、命令作用与应用场景 如果想看命令意义,可以直接跳到第五部分 一、> /dev/null 2>&1 命令解析 我们在别…

葡萄酒带领酒类新风尚,云仓酒庄培训开启专业品鉴新篇章

随着人们生活品质的提升和多元文化的交融,酒类消费在中国正经历着前所未见的变革。葡萄酒以其与众不同的魅力,正逐渐带领着酒类新风尚,成为越来越多消费者餐桌上的新宠。与此同时,白酒、烈酒及精酿啤酒等酒类也以其各自的特色和风…

ELK企业级日志分析系统以及多种部署

目录 ELK简介 ELK简介 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 ●ElasticSearch:是基于Lucene(一个全文检索引…

【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.6p1(亲测无问题,建议收藏)

👨‍🎓博主简介 🏅CSDN博客专家   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入&#xff01…

C++ | Leetcode C++题解之第23题合并K个升序链表

题目: 题解: class Solution {// 21. 合并两个有序链表ListNode *mergeTwoLists(ListNode *list1, ListNode *list2) {auto dummy new ListNode(); // 用哨兵节点简化代码逻辑auto cur dummy; // cur 指向新链表的末尾while (list1 && list2) {if (list1…

python的算术运算符

python常用算术运算符代码如下: #算术运算符操作 x 10 y 20 z 30 #加法运算 a x y print("a的值为:", a) #减法运算 a x - y print("a的值为:", a) #乘法运算 a x*y print("a的值为:", a) …

设计模式面试题

概述 设计模式分类 创建型模式 用于描述“怎样创建对象”,主要特点是“将对象的创建与使用分离”。使用者不需要官族对象创建的细节。结构型模式 用于描述如何将类或对象按照某种布局组成更大的结构。行为型模式 用于描述类或对象之间怎样相互协作共同完成单个对象…

vue3 动态class和style

1、需求:一个删除的弹窗,点击会提示“是否需要删除XXXXX(name)”,但是name不固定,所以删除弹窗的width不能写死。(如果不设置width,本项目的弹窗会自适应变得特别长)

JavaScript之Proxy详解

文章的更新路线:JavaScript基础知识-Vue2基础知识-Vue3基础知识-TypeScript基础知识-网络基础知识-浏览器基础知识-项目优化知识-项目实战经验-前端温习题(HTML基础知识和CSS基础知识已经更新完毕) 正文 Proxy是JavaScript中的一个强大而灵活…