当前位置:  开发笔记 > 运维 > 正文

使用JSON ARRAY(地图列表)中的特定键值对查找/过滤列表

如何解决《使用JSONARRAY(地图列表)中的特定键值对查找/过滤列表》经验,为你挑选了1个好方法。



1> Szymon Stepn..:

过滤

Groovy有一个调用的方法Collection.findAll(Closure closure),它过滤掉所有不满足谓词的值(表示为闭包):

println listOfMap.findAll { map -> map.METHOD == 'CLICK' && map.RESULT == 'FAIL' }

// Output: [[TESTCASE:2, METHOD:CLICK, RESULT:FAIL], [TESTCASE:3, METHOD:CLICK, RESULT:FAIL]]

数数

还有一种方法DefaultGroovyMethods.count(Iterable self, Closure closure)需要一个谓词并计算有多少元素满足它:

println listOfMap.count { map -> map.METHOD == 'CLICK' && map.RESULT == 'FAIL' }

// Output: 2

地图列表中的唯一值列表

要从地图列表中选择给定键的值,您可以使用Groovy的扩展运算符:

println listOfMap*.METHOD // btw, listOfMap.METHOD will do the same

此代码转换为"为内部的每个元素listOfMap获取键的值METHOD.在下一步中,您可以使用Collection.unique()方法删除所有重复项:

println listOfMap*.METHOD.unique()

// Output: [CLICK, TYPETEXT]

警告:以下方法在Jenkins管道Groovy脚本中不起作用.在这种情况下,您必须Collection.collect(Closure closure)明确使用:

println listOfMap.collect { map -> map.METHOD }.unique()

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有