在JSR223 PostProcessor中,我使用此方法获取响应数据:
class First:
def __init__(self):
self.foo = 'foo'
super().__init__()
class Second:
def __init__(self):
self.bar = 'bar'
super().__init__()
class Third(First,Second):
def __init__(self):
super().__init__()
print(self.__dict__)
Third() # prints: {'foo': 'foo', 'bar': 'bar'}
这是我的json输出的片段就像这样
def json = new JsonSlurper().parseText(response)
文件夹:\ Voice133,id:2542,信息:[[xPath:/ TestCases / TestCase [001],
如您所见,此回复包含两件我感兴趣的内容:
XmlItemResult:[[xPath:/Blocks/Block[001], name:abc, folder:\A\abc\a1, id:84, information:[[xPath:/Blocks/Block[001], result:Block number 1: abc], [xPath:/Blocks/Block[001]/Steps/CallSteps/Step[001], result:Call step StepNo 1],
我只需要获取此行的ID值 - >文件夹:\ Voice133,id:2542,
注释2542是可变的,每次运行后都可以不同。
我试过
folder:\A\abc\a1, id:84,
folder:\Voice133, id:2542,
答案 0 :(得分:0)
您的字符串不是有效的JSON,您可以使用任何online JSON validator自行查看,因此您将无法使用JsonSlurper,而是必须使用正则表达式。
在Groovy中,您可以使用=~
- Find Operator以便能够提取所需的值,示例代码如下:
def response = 'XmlItemResult:[[xPath:/Blocks/Block[001], name:abc, folder:\\A\\abc\\a1, id:84,' +
' information:[[xPath:/Blocks/Block[001], result:Block number 1: abc],' +
' [xPath:/Blocks/Block[001]/Steps/CallSteps/Step[001], result:Call step StepNo 1], '
def matcher = (response =~ 'folder:\\\\A\\\\abc\\\\a1, id:(\\d+),')
if (matcher.find()) {
log.info('Folder ID = ' + matcher.group(1))
}
演示: