【发布时间】:2021-02-23 19:16:16
【问题描述】:
尝试过滤选择性索引。 Fieldid 值随着每次构建而变化,不变的是fieldName": "TX.Sessionval.cost"。需要过滤掉整个stringval并保存到变量中
fieldName": "TX.Sessionval.cost"
[
{
"Fieldid": "Fieldid/112",
"fieldName": "TX.Sessionval.cost",
"stringval": "jklah-dw-4c8d-8320-das313s3ASsda|000725N8WuUrfwAS7alP|banker_name"
}
]
试过def slurper = new JsonSlurper() def result = slurper.parseText(response.getResponseBodyContent()) def newf = result.findAll { it.contains("TX.Sessionval.cost") }得到groovy.lang.MissingMethodException:没有方法签名:java.util.LinkedHashMap$Entry.contains()
在邮递员定位器中工作正常
postman.setEnvironmentVariable("Stdid", jsonData.newFields[112].stringValue)
【问题讨论】:
-
错误是由于迭代地图。
result很可能不包含您认为它包含的内容(例如,json 不是数组,而是顶层对象)。 -
结果确实有` "Fieldid": "Fieldid/112", "fieldName": "TX.Sessionval.cost", "stringval": "jklah-dw-4c8d-8320-das313s3ASsda| 000725N8WuUrfwAS7alP|banker_name" ` 在 newFields[112] 下,但它每次都更改,因此需要使用 katalon 搜索整个 JSON 输出。
-
所以,您的
result只包含一张地图,没有包装数组。老实说,我无法理解您想要实现的目标.. 但是如果您想从映射中删除值不包含“TX ...”的所有键:result.findAll{ ! it.value.contains("TX.Sessionval.cost") } -
您的示例 JSON 是 list 中的 map。你得到的错误是
result的一个元素是一个 map entry - 所以很明显你正在共享的 JSON 和你实际阅读的 JSON 之间存在差异。 -
JSON 结果很大,只是根据我用于
postman.setEnvironmentVariable("Stdid", jsonData.newFields[112].stringValue)的内容来寻找解决方案,但由于每次都会更改值,例如 Fieldid": "Fieldid/112, Fieldid": "Fieldid/ 123, Fieldid": "Fieldid/129 然后每次都要手动编辑它而不是过滤到特定的搜索当 fieldName": "TX.Sessionval.cost" 是这个打印字符串值
标签: arrays arraylist groovy katalon-studio groovy-console