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

Groovy解析JSON如何获取全量数据及指定team role id的amount值

问题根因

现有代码存在两个核心错误导致无法拿到目标数据:

  1. HTTP请求为异步执行,你将JSON解析、取值逻辑写在了response.success回调外部,回调函数还未执行完成、未给arrayDen赋值时,外部的解析代码就已经运行,最终拿到的是历史缓存的单条默认费率数据
  2. 存在冗余的错误转换逻辑:Groovy HTTP客户端默认已经将响应JSON解析为可直接操作的List/Map结构传入回调的json参数,额外做JsonOutput.toJson转字符串、substring截取首尾、JsonSlurper重复解析的操作,反而会破坏原JSON的数组结构,引发解析异常
修复后完整代码
http.request(Method.GET) {
    response.success = { resp, json ->
        // 直接在回调内操作已解析完成的json数组,无需额外格式转换
        def targetRecord = json.find { item ->
            // 匹配link类型为TEAM_ROLE、关联id为4的条目
            item.link?.type == "TEAM_ROLE" && item.link?.id == 4
        }
        def targetAmount = targetRecord?.amount
        // 此处写后续业务逻辑,示例打印结果
        log.warn("目标费率值:{}", targetAmount) // 对应示例JSON输出为1000.0
    }
}
关键调整说明
  • 移除所有冗余的JSON转字符串、字符串截取、重复解析逻辑,直接使用回调传入的已解析json对象操作
  • 所有数据处理逻辑全部移入response.success回调内部,保证请求成功拿到完整响应后再执行解析取值
  • 用Groovy内置的集合find方法匹配目标条目,通过安全导航符?.规避字段为空时的空指针异常,直接获取对应amount值

内容的提问来源于stack exchange,提问作者Gökberk Karaca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:54:27