【发布时间】:2019-01-25 01:24:29
【问题描述】:
我们有以下 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 Refer for more
下面是代码,我正在使用:-
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 中。所以它会返回值为“Images/Sun.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']
但是现在,我有很多要验证的路径,如果路径不匹配,它将在脚本中间失败并且路径的其余部分将不会被验证..如何使用 groovy 处理这个事情?
如果我使用 if/else,并作为 NULL 传递.. 它没有得到验证,并且脚本在该步骤失败。
【问题讨论】:
-
您是在问我们如何在 groovy 中捕获异常? groovy-lang.org/semantics.html#_exception_handling
-
是的,有点。由于我得到的错误是一个对话框。如果它在日志中打印一些东西,比如“路径不存在”,那么我们可以使用 if else 处理它
-
@JBNizet - 嘿,谢谢,使用 try catch,它起作用了。