1

我正在使用骡社区版。所以没有Dataweave。我正在我的应用程序中使用休息服务。在此后端休息服务的 json 响应中。我需要检查一个特定元素是否存在于数组的多个元素中,无论它存在于何处,我都需要更新它的值。

例如(样本)

Input Request : [ { "id" : "1", "item" : "car", "make" : "Tonda" }, { "id" : "1", "item" : "car" } ]

使用 foreach 迭代数组。对于每个需要在表达式组件中执行以下操作的内容。

if( payload.make exists) { payload.make = "Tero"; }

但我不知道,如何检查“如果元素存在”“条件。我在表达式组件中尝试过

if( payload.make != empty) { payload.make = "Tero"; }

但它不起作用,并在不存在特定键(make)的情况下为每个数组元素给出错误“表达式执行失败(org.mule.api.expression.ExpressionRuntimeException)”

4

2 回答 2

1

在 foreach 中使用表达式:#[payload.containsKey('make')]检查 json 键 make 是否存在。这将返回truefalse

轻松简单!
参考:https ://forums.mulesoft.com/questions/71478/how-to-check-if-a-key-element-exists-and-if-presen.html?childToView=71502#answer-71502

于 2017-07-24T14:03:31.160 回答
0

在流程中进行测试,如果您的有效负载是单个对象而不是集合,您可以执行 MEL:

#[(payload.?make != empty) ? "EXISTS" : " OPS NO"]

只需将“EXISTS”更改为您的真实情况,将“OPS NO”更改为错误情况。

根据文档: https ://docs.mulesoft.com/mule-user-guide/v/3.7/mule-expression-language-reference

零安全

要以 null 安全的方式访问属性,请添加 .? 链中一个或多个对象之前的运算符。在以下表达式中,如果 fieldA 为 null,则表达式的计算结果为 null 而不是 NullPointerException。

于 2017-07-24T13:46:59.103 回答