如何对 JSON 数组(地图列表)中的数据进行排序并将它们导出到 excel/csv

How to sort data from a JSON ARRAY (list of maps) and export them to excel/csv

我有一个 JSON 数组(地图列表)类似于:

def listOfMap = [[TESTCASE:1, METHOD:'CLICK', RESULT:'PASS'], 
      [TESTCASE:2, METHOD:'CLICK', RESULT:'FAIL'], 
      [TESTCASE:3, METHOD:'CLICK', RESULT:'FAIL'], 
      [TESTCASE:4, METHOD:'TYPETEXT', RESULT:'FAIL']]

我想生成一个报告在一列中包含唯一的方法名称,在另一列中包含它们的失败百分比并导出到csv/excel/html。报告应采用以下模式

1) 实现此目标的最短 groovy 代码是什么?
2) 如何导出数据到excel/csv?

我有这些可用的代码片段,但无法连接点

a) 获取唯一方法列表 listOfMap.METHOD.unique()

b) 获取每个方法的运行次数(这里我想遍历上面的输出) listOfMap.count{ 地图 -> map.METHOD == 'CLICK'}

c) 从上面的列表中获取所有方法的失败计数 listOfMap.count { 地图 -> map.METHOD == 'CLICK' && map.RESULT == 'FAIL' }

现在我要计算:(每个方法的失败结果计数/每个方法的总运行次数 * 100)

像这样:

def percentage (map){
     (map.FAIL ?: 0) / ((map.PASS ?: 0) + (map.FAIL ?: 0)) * 100
}

def result = listOfMap.groupBy{it.METHOD}
                      .collectEntries{[(it.key) : percentage(it.value.countBy{it.RESULT})]}

def outputCsv = new File('/pathToReport/report.csv')
outputCsv.write "S.No;MethodName;Failture %\n"
result.eachWithIndex{ entry, index ->
   outputCsv << "${index+1};${entry.key};${entry.value}\n"