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

SoapUI Groovy脚本报PathNotFoundException 如何让缺失字段返回null

问题根因

代码中调用的JsonPath read()方法默认配置下,匹配不到指定JSON路径时会直接抛出PathNotFoundException,不会自动返回null;同时原有脚本未显式声明JsonPath解析配置、也未引入对应依赖,是触发报错的直接原因。

可行解决方案

方案1:修改JsonPath配置,缺失路径时返回null

通过显式配置JsonPath的DEFAULT_PATH_LEAF_TO_NULL参数,即可让路径匹配失败时直接返回null,不再抛出异常,可直接替换原有脚本:

import com.jayway.jsonpath.Configuration
import com.jayway.jsonpath.JsonPath
import com.jayway.jsonpath.Option

// 初始化JsonPath配置:指定路径不存在时返回null
def pathConfig = Configuration.builder()
    .options(Option.DEFAULT_PATH_LEAF_TO_NULL)
    .build()

def response = context.expand( '${moneytransfer#Response}' )
def id = JsonPath.using(pathConfig).parse(response).read('$.success_text')
log.info id

方案2:使用Groovy原生解析器,无需额外配置

SoapUI自带Groovy原生的JsonSlurper解析组件,访问不存在的JSON字段时天然返回null,不会抛出路径不存在异常,代码更简洁:

import groovy.json.JsonSlurper

def response = context.expand( '${moneytransfer#Response}' )
def parsedResp = new JsonSlurper().parseText(response)
def id = parsedResp.success_text
log.info id

补充说明:

  • 如果moneytransfer接口返回的是XML格式而非JSON格式,把JsonSlurper替换为XmlSlurper即可,访问不存在节点的逻辑完全一致,不会触发异常
  • 如果需要读取多层嵌套的JSON字段,建议搭配Groovy安全导航符?.使用,例如读取$.data.info.success_text时写为parsedResp.data?.info?.success_text,即使上层节点不存在也会直接返回null,不会抛出空指针异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:54:20