You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SoapUI-Groovy脚本从JSON响应提取子节点求助

在SoapUI中用Groovy提取JSON响应子节点的实用方法

嘿,作为刚接触SoapUI和Groovy的新手,我完全懂你想快速搞懂提取JSON子节点的心情!下面给你两种在SoapUI里最常用的方法,结合你的示例JSON来一步步演示:

方法1:用Groovy自带的JsonSlurper(灵活度拉满)

Groovy的JsonSlurper能把JSON字符串直接转成可操作的Groovy对象,之后用点语法或者键名就能轻松取到子节点,非常直观。

示例代码

// 1. 先拿到测试步骤的响应内容,记得替换成你实际的测试步骤名称
def responseContent = context.expand('${你的测试步骤名称#Response}')

// 2. 初始化JsonSlurper并解析JSON
def jsonParser = new groovy.json.JsonSlurper()
def jsonData = jsonParser.parseText(responseContent)

// 3. 提取你需要的子节点,用你的示例字段举例
def userId = jsonData.userId
def userName = jsonData.name
def employeeId = jsonData.employeeId
def userRole = jsonData.role

// 打印出来验证结果
log.info "提取到的用户ID: ${userId}"
log.info "提取到的员工编号: ${employeeId}"
log.info "提取到的用户角色: ${userRole}"

如果遇到嵌套的JSON结构,直接链式调用就行,比如jsonData.parentNode.childNode,非常方便。

方法2:用SoapUI自带的JSONPath(简洁高效)

SoapUI原生支持JSONPath语法,不用写太多Groovy代码就能精准定位节点,适合快速提取单个字段。

脚本中使用JSONPath的示例

// 获取响应内容
def responseContent = context.expand('${你的测试步骤名称#Response}')

// 用JSONPath定位并提取字段
def dateOfBirth = new com.eviware.soapui.support.JsonPath().get(responseContent, '$.dateOfBirth')
def isDeleted = new com.eviware.soapui.support.JsonPath().get(responseContent, '$.deleted')

log.info "用户生日: ${dateOfBirth}"
log.info "用户是否已删除: ${isDeleted}"

不用写脚本的快捷方式:属性转移

如果你不想写代码,还可以用SoapUI的属性转移功能:

  • 右键目标测试步骤 → 新建 → 属性转移
  • 源选择你的接口测试步骤,源路径填JSONPath(比如$.userId)
  • 目标选择要存储值的位置(比如测试用例属性、全局属性)
  • 运行属性转移就能自动把值提取过去啦

小提示

  • 记得把代码里的${你的测试步骤名称#Response}替换成你实际的测试步骤名称,比如${Get User Detail#Response}
  • 如果JSON里有数组,JSONPath可以用$.[0].field取第一个元素的字段,Groovy里则用jsonData.arrayName[0].field
  • 遇到可能为null的字段(比如你的示例里email),可以加个默认值避免空指针:def userEmail = jsonData.email ?: '未填写邮箱'

内容的提问来源于stack exchange,提问作者Ronak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:57:39