Arrays 在groovy中从Json索引中筛选/选择数组值

Arrays 在groovy中从Json索引中筛选/选择数组值,arrays,arraylist,groovy,katalon-studio,groovy-console,Arrays,Arraylist,Groovy,Katalon Studio,Groovy Console,正在尝试筛选选择性索引。Fieldid值随每次构建而变化,不变的是fieldName:“TX.Sessionval.cost”。需要过滤掉整个stringval并保存到变量中 fieldName": "TX.Sessionval.cost" 已尝试def slurper=new JsonSlurper()def result=slurper.parseText(response.getResponseBodyContent())def newf=result.fi

正在尝试筛选选择性索引。Fieldid值随每次构建而变化,不变的是
fieldName:“TX.Sessionval.cost”
。需要过滤掉整个
stringval
并保存到变量中

fieldName": "TX.Sessionval.cost"
已尝试
def slurper=new JsonSlurper()def result=slurper.parseText(response.getResponseBodyContent())def newf=result.findAll{it.contains(“TX.Sessionval.cost”)}
getting groovy.lang.MissingMethodException:没有方法签名:java.util.LinkedHashMap$Entry.contains()

在邮递员定位器工作良好

postman.setEnvironmentVariable("Stdid", jsonData.newFields[112].stringValue)

你的问题中的JSON是错误的。从你的工作 代码,这应该可以:

result.newFields.find{ it.fieldName == "TX.Sessionval.cost" }?.stringValue

你的问题中的JSON是错误的。从你的工作 代码,这应该可以:

result.newFields.find{ it.fieldName == "TX.Sessionval.cost" }?.stringValue

这适用于我
result.newFields.findAll{Map-Map->Map.get(“fieldName”).contains(“TX.Sessionval.cost”)}.stringValue
这适用于我
result.newFields.findAll{Map-Map->Map.get(“fieldName”).contains(“TX.Sessionval.cost”)}?.stringValue

错误是由于在映射上进行迭代造成的。最有可能的是,
结果
不包含您认为它包含的内容(例如,json不是数组,而是顶层的对象)。结果确实有“Fieldid”:“Fieldid/112”,“fieldName”:“TX.Sessionval.cost”,“stringval”:jklah-dw-4c8d-8320-das313s3ASsda | 000725N8WuUrfwAS7alP |银行家|姓名`在newFields下[112]但是它每次都会改变,所以需要使用katalon搜索整个JSON输出。因此,您的
结果只包含一个映射,而不包装数组。老实说,我无法理解您想要实现的目标..但是如果您想从映射中删除值不包含'TX...:
result.findAll{!it.value.contains('TX.Sessionval.cost“}
您的示例JSON是列表中的一个映射。您得到的错误是,
result
的一个元素是一个映射条目-因此,您正在共享的JSON和您实际读取的JSON之间显然存在差异。JSON结果是巨大的,只需根据我在
postman.setEnvironmentV中使用的内容查找解决方案即可变量(“Stdid”,jsonData.newFields[112].stringValue)
但由于该值每次都会像Fieldid一样更改:“Fieldid/112,Fieldid”:“Fieldid/123,Fieldid”:“Fieldid/129”必须每次手动编辑它,而不是在fieldName为“TX.Sessionval.cost”时过滤到特定搜索此打印是否为StringValues错误是由于在地图上迭代引起的。最有可能的是
result
不包含您认为它包含的内容(例如,json不是数组,而是顶级对象)。result在newFields[112]下有“Fieldid”:“Fieldid/112”,“fieldName”:“TX.Sessionval.cost”,“stringval”:“jklah-dw-4c8d-8320-das313assda | 000725n8wurfwas7alp | banker|u name”`但是它每次都会改变,所以需要用katalon搜索整个JSON输出。因此,您的
结果只包含一个映射,而不包含包装数组。说实话,我不明白你想达到什么目的。。但是,如果您想从映射中删除值不包含“TX…”的所有键:
result.findAll{!it.value.contains(“TX.Sessionval.cost”)}
您的示例JSON是列表中的映射。您得到的错误是,
result
的一个元素是一个映射条目-因此,您正在共享的JSON和您实际读取的JSON之间显然存在差异。JSON结果是巨大的,只是根据我在
postman.setEnvironmentVariable(“Stdid”,jsonData.newFields[112]中使用的内容来寻找解决方案.stringValue)
但由于该值每次都会更改,如Fieldid:“Fieldid/112,Fieldid:“Fieldid/123,Fieldid:“Fieldid/129”,因此每次都必须手动编辑它,而不是在fieldName:“TX.Sessionval.cost”时过滤到特定搜索“这是印刷品吗stringvalue@cfick,要更新的内容更具意义,更新sameconsole在打印时为空,只是在选中Json路径时添加它为我提供的x.newFields[112].stringValue.customFields(过滤器((a)==a.fieldName==TX.Sessionval.cost')[0].stringValue))这在postanfirst
newFields
中起作用,现在
customFields
起作用。。。你试过把这个应用到我的答案中吗?是的,你的解决方案在邮递员中有效。但是它不适用于groovy
newFields
ignore customfield抱歉。@cf单击,要更新的内容更有意义,请在打印时更新sameconsole给我null,只是在选中Json路径时添加它给我x.newFields[112].stringValue.customFields(过滤器((a)==a.fieldName='TX.Sessionval.cost')[0].stringValue))这在postanfirst
newFields
中起作用,现在
customFields
起作用。。。你试过把这个应用到我的答案中吗?是的,你的解决方案在邮递员中有效。但是它不适用于groovy
newFields
ignore customfield抱歉。