You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy处理Jira变更日志JSON遇MissingPropertyException问题求助

Groovy处理Jira变更日志JSON的问题解决方案

问题1报错修复

issue.findAll {it.field == "Total Votes"}抛出MissingPropertyException,是因为issue是LinkedHashMap的Entry集合,每个迭代元素it是键值对(Entry对象),它本身没有field属性——field是变更日志里items数组中单个元素的属性。

正确的遍历逻辑是先拿到每个变更日志条目(Entry的value),再筛选条目下的目标字段:

def filteredChanges = issue.collectMany { entry ->
    // entry.value 对应单个变更日志条目,包含displayName、created、items等属性
    entry.value.items.findAll { item ->
        item.field == "Total Votes"
    }.collect { item ->
        // 合并外层关联信息与item字段
        [
            displayName: entry.value.displayName,
            created: entry.value.created,
            field: item.field,
            toString: item.toString
        ]
    }
}.findAll() // 过滤空结果

问题2:保留关联信息的正确方式

用issue.values.items.flatten()会丢失displayName、created这类外层信息,原因是flatten仅提取了items的元素,未将其与所属的变更条目绑定。上述代码通过collectMany嵌套collect,把符合条件的item和它所属的变更条目信息合并成新Map,确保所有需要的字段都被保留。

示例输出

执行后filteredChanges会生成指定格式的列表:

[
    [displayName: "张三", created: "2024-05-20T10:30:00.000+0800", field: "Total Votes", toString: "Votes changed from 5 to 8"],
    [displayName: "李四", created: "2024-05-21T14:15:00.000+0800", field: "Total Votes", toString: "Votes changed from 8 to 10"]
]

内容的提问来源于stack exchange,提问作者kya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:01:21