我们有以下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
因为,“path”存在于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 ..它没有得到验证,并且脚本在该步骤失败。
答案 0 :(得分:0)
使用groovy的try / catch和final关键字,我们可以处理这些事情。
答案 1 :(得分:0)
您可以将其返回为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