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

使用Groovy移除JSON中Description和Title为空的SEO数组

解决JSON中移除空SEO数组的Groovy实现问题

问题背景

需求:当JSON数组中对象的SEO数组内所有元素的Description和Title字段均为空时,移除该SEO字段。

原代码问题分析

你提供的代码存在几个关键问题:

  • 遍历层级错误:外层遍历的是JSON数组元素,但内层针对单个SEO元素做判断,未覆盖整个SEO数组的校验
  • 移除对象错误:试图从外层JSON数组移除SEO字段,而非当前遍历的对象
  • 条件判断逻辑混乱:findResults的写法无法准确校验Description和Title是否均为空

正确实现代码

def Message processData(Message message) {
    def body = message.getBody(String);
    def json = new JsonSlurper().parseText(body)  

    json.each { item ->
        // 先确认当前对象存在SEO字段
        if (item.SEO) {
            // 校验SEO数组内所有元素的Description和Title是否全为空
            boolean allSeoEntriesEmpty = item.SEO.every { seoEntry ->
                seoEntry.Description == "" && seoEntry.Title == ""
            }
            // 满足条件则移除当前对象的SEO字段
            if (allSeoEntriesEmpty) {
                item.remove("SEO")
            }
        }
    }

    def out = JsonOutput.toJson(json)
    message.setBody(out)
    return message
}

代码逻辑说明

  1. 遍历外层JSON数组中的每个对象
  2. 先判断对象是否存在SEO字段,避免空指针异常
  3. 使用every方法校验SEO数组内的所有元素:只有当所有元素的Description和Title都为空时,返回true
  4. 若校验通过,从当前对象中移除SEO字段
  5. 将处理后的JSON转换为字符串并设置回消息体

测试结果

针对你提供的示例JSON,运行代码后输出结果如下:

[
    {
        "accesoires": [
            "1167296"
        ],
        "shortCode": "S-576",
        "spareParts": [
            "800236"
        ]
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:10:53