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

咨询:Camel返回数据是否为Groovy列表嵌套及代码实现

问题解答

结构确认

你看到的输出确实是列表嵌套Map的结构:

  • 外层的[]代表一个List(列表),内部包含多条数据库记录
  • 每个{key=value, ...}是一个Map(键值对集合),对应数据库返回的单条记录,键为数据库列名/别名,值为对应字段内容

在Camel中,JDBC、SQL这类数据库组件查询返回的结果,默认就是List<Map<String, Object>>类型,和你看到的结构完全匹配。

Groovy示例代码

1. 手动构造该数据结构

如果要在Groovy里直接构建相同结构的数据,写法如下:

def productRecords = [
    [sku: 'HT-0001', Performance: 'Fair', ProductGroup: 'Movers', name: 'ProductPerformance'],
    [sku: 'HT-0002', Performance: 'Great for product group', ProductGroup: 'Staid', name: 'ProductPerformance'],
    [sku: 'VT-KK2150', Performance: 'act7', ProductGroup: 'Slammers', name: 'ProductPerformance']
]

Groovy里[]可同时表示List和Map:外层[]是List,内部每个[key: value]是Map,和你从Camel获取的结构完全一致。

2. 遍历处理该结构(Camel脚本场景)

如果要在Camel的Groovy脚本里处理${body},可直接按List+Map的方式操作,比如遍历打印每条记录:

// 假设body就是从数据库返回的List<Map>
body.each { record ->
    println "SKU: ${record.sku}, 产品组: ${record.ProductGroup}, 性能评级: ${record.Performance}"
    // 也可以通过键名的字符串形式取值:record['sku']
}

3. 验证结构类型

如果不确定当前body的具体类型,可在Groovy里打印类型信息确认:

println "整体结构类型: ${body.getClass().name}"
println "单条记录类型: ${body[0].getClass().name}"

执行后会输出类似结果:

整体结构类型: java.util.ArrayList
单条记录类型: java.util.LinkedHashMap

这就明确验证了是List嵌套Map的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:25:39