当 JSON 路径不存在 JSON 路径时,将返回什么?



我们有以下JSON:-

def json='''{
"widget": {
"debug": "on",
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500
},
"image": {
"src": "Images/Sun.png",
"name": "sun1",
"hOffset": 250,
"vOffset": 250,
"alignment": "center"
},
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
}
}'''

要检查 JSON 中是否存在路径,我正在使用 com.jayway.jsonpath.JsonPath 参考了解更多信息

以下是我正在使用的代码:-

import groovy.json.*
import static com.jayway.jsonpath.JsonPath.parse
import static com.jayway.jsonpath.Criteria.where;
import static com.jayway.jsonpath.Filter.filter;
import com.jayway.jsonpath.Configuration
import com.jayway.jsonpath.JsonPath
import com.jayway.jsonpath.spi.json.JacksonJsonNodeJsonProvider
import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider
def path = "$.widget.image.src"
def value = parse(json).read(path).toString()
log.info value

因为,"路径"存在于 JSON 中。所以它会将值返回为"图像/太阳.png",如果 JSON 中不存在此路径怎么办:-

看看这个代码:-

def path = "$.widget.image.src1"
def value = parse(json).read(path).toString()
log.info value

它给出的错误是:-

com.jayway.jsonpath.PathNotFoundException : no results for path: $['widget']['image']['src1']

但是现在,我有很多路径需要验证,如果路径不匹配,它将在脚本中间失败,其余路径将不会验证。如何使用时髦处理这件事?

如果我使用 if/else,并作为 NULL 传递,它没有得到验证,并且脚本在该步骤失败。

使用 try/catch 和 groovy 的 final 关键字,我们可以处理这件事。

您可以将其作为 null 返回,更改您的配置

def path = "$.widget.image.src1"
def value = parse(json).using(Configuration.builder()
.options(Option.DEFAULT_PATH_LEAF_TO_NULL).build())
.read(path).toString()
log.info value

最新更新