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

如何访问Camel消息Body中的JSON数组元素并编写对应判断表达式

解决方案

你可以通过以下两种场景的写法实现需求,覆盖Body为JSON字符串、Body已反序列化为Java List的两种情况:

1. 判断JSON数组长度的表达式

场景1:Body为原始JSON字符串

需先确保项目引入camel-jsonpath依赖(Spring Boot项目引入camel-jsonpath-starter即可),可以灵活获取数组长度做数值判断:

.choice()
  // 可灵活修改数值判断数组长度是否等于指定值
  .when("${jsonpath('$.length()')} == 0")
    // 数组为空的处理逻辑
  .otherwise()
    // 数组非空的处理逻辑

也可以直接使用JsonPath Predicate写法:

.when(jsonpath("$.length() == 0"))

场景2:Body已反序列化为Java List对象

无需额外依赖,直接通过Simple表达式取List长度即可:

.when("${body.size()} == 0")

2. 提取指定位置对象属性设置Header

数组下标从0开始计算,例如要提取第二个对象(对应下标1)的phone属性赋值给To Header,写法如下:

场景1:Body为原始JSON字符串

// 第二个参数设为true表示开启异常抑制,数组下标越界时返回null不报错
.header("To", jsonpath("$[1].phone", true))
// 也可以指定兜底默认值
.header("To", jsonpath("$[1].phone", true, "defaultValue"))

场景2:Body已反序列化为Java List对象

.header("To", simple("${body[1].phone}"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:15:02