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

使用Groovy脚本移除JSON数组中指定字段双引号的问题求解

问题根因

你原来的脚本仅适配了单JSON对象结构的输入,当输入为JSON数组时,JsonSlurper解析后返回的是List集合,集合本身没有Amount字段,所以转换逻辑完全不触发。另外原脚本还存在2处语法问题:一是没有实例化JsonSlurper就直接调用方法,二是把convertToFloat方法定义在了processData方法内部,不符合Groovy语法规范。

修正后完整脚本
import com.sap.gateway.ip.core.customdev.util.Message
import groovy.json.JsonBuilder
import groovy.json.JsonSlurper

def Message processData(Message message) {
    def body = message.getBody(java.lang.String) as String
    def jsonSlurper = new JsonSlurper()
    def jsonData = jsonSlurper.parseText(body)

    // 兼容数组和单对象两种结构
    if (jsonData instanceof List) {
        jsonData.each { item ->
            if (item.Amount != null) {
                item.Amount = convertToFloat(item.Amount)
            }
        }
    } else if (jsonData instanceof Map) {
        if (jsonData.Amount != null) {
            jsonData.Amount = convertToFloat(jsonData.Amount)
        }
    }

    message.setBody(new JsonBuilder(jsonData).toPrettyString())
    return message
}

static Object convertToFloat(Object inputValue) {
    if (inputValue.isNumber()) {
        return inputValue.toFloat()
    }
    return inputValue
}
效果说明

修正后的脚本会自动判断输入JSON的结构:如果是数组就遍历每一个对象处理Amount字段,单对象则直接处理,最终输出的Amount字段会转为数值类型,不再带双引号,完全符合你给出的预期输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:48:01