{"methods":[[{"p_id":"v1","offline":false,}],[{"p_id":"v2","offline":true,}]]}以上是我的JSON有效负载。我正在使用嵌套的迭代中介器来获取p_id和v1的值。我能够成功地获取值,但是第一个迭代中介之外的日志没有被打印出来。
以下是我的代码:
<iterate expression="json-eval($.methods)" id="iterate-over-Methods">
<target>
<sequence>
<iterate expression="json-eval($)" id="2nd-iteration">
<target>
<sequence>
<filter regex="false" source="json-eval($.offline)">
<then>
<property expression="json-eval($.p_id)" name="p-id" scope="default" type="STRING"/>
<log>
<property expression="$ctx:p-id" name="p-id-set"/>
</log>
</then>
<else>
<log>
<property name="p-id-set" value="Provider ID already set"/>
</log>
</else>
</filter>
<log>
<property name="status-1" value="Inside 1st iteration" />
</log>
</sequence>
</target>
</iterate>
<log>
<property name="status-2" value="Inside 2nd iteration" />
</log>
</sequence>
</target>
</iterate>这段代码是否进入了一个无限循环,而它并没有出现呢?我该怎么处理呢?提前谢谢..。
发布于 2022-09-12 12:34:39
根据您提供的信息,我认为您可以在这里使用一个Iterator。(但这确实取决于您的全部使用)。下面是一个带有一个迭代中介器的示例。
<iterate expression="json-eval($.methods)" id="pl-iterator">
<target>
<sequence>
<property expression="json-eval($[0].p_id)" name="p-id" scope="default" type="STRING"/>
<log level="full">
<property expression="$ctx:p-id" name="p-id-set"/>
</log>
</sequence>
</target>
</iterate>另外,Iterate Mediator应该与Aggregate Mediator耦合。因此,请确保添加了适当的聚合逻辑。
在编程语言中,不应将迭代中介器视为for-循环。当您在有效负载上迭代时,有效载荷将被拆分,每个段将在自己的线程上并发执行。因此,除非有必要,否则使用嵌套迭代中介器并不是一个好主意。
https://stackoverflow.com/questions/73686012
复制相似问题