Mule:访问给定阵列数组的值

时间:2017-04-25 22:58:40

标签: mule

我试图访问mule中数组Array的每个子数组中每个第2个元素的值。例如,这是我的有效负载(存储在flowVar中)。

InputPayload = [[JAAW,3000.0,EQtEAM],[JAAW,233333.0,3EAM]]

我试图在迭代中访问每个数组的第二个元素,所以我执行以下操作:

      <foreach collection="#[flowVars.InputPayload]" counterVariableName="i" doc:name="For Each" > 
      <set-variable variableName="ID" value="#[flowVars.InputPayload[i][2]]" doc:name="Variable"/>

但是我的代码中断了以下错误:

消息:执行表达式&#34; flowVars.InputPayload [i] [2]&#34;失败。 (org.mule.api.expression.ExpressionRuntimeException)。消息有效内容的类型为:ArrayList,

如何访问每个第二个元素的值?

2 个答案:

答案 0 :(得分:0)

没有读取有效载荷,这就是问题

答案 1 :(得分:0)

显然,错误是由不正确的索引分配#[flowVars.InputPayload[i][2]](java.lang.IndexOutOfBoundsException)引起的。索引从1开始,在第二次迭代期间发生错误。

恕我直言,有两种方法可以解决这个问题:

  1. 使用1:#[flowVars.InputPayload[i - 1][2]]
  2. 减去索引
  3. 修改表达式,直接使用有效负载。由于 For Each 范围内的有效负载已经引用了迭代项本身:#[payload[2]]