咨询: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
相关产品推荐
相关产品推荐

