如何检查有效负载中是否存在密钥并在选择条件中使用它
How to check if a key exists in the payload and use that in a choice condition
我想检查数组的第一个元素(对象)中是否存在键。
当我写下以下内容时:
flowVars.payloadStored[0].data!=null
在选择的 when 条件下,出现以下错误:
表达式 'flowVars.payloadStored[0].data!=null' 的执行失败。 -> [错误:空指针:flowVars.payloadStored[0].data],[附近:{... flowVars.payloadStored[0].data ....}],^,[行:1 , 列: 1] -> ",
即使尝试
flowVars.payloadStored[0].['data']!=null
我仍然收到错误消息:
[Error: unterminated string literal],[Near : {... flowVars.payloadStored[0].['data']!=null ....}], ^,[Line: 1, Column: 35]"
任何线索,如何做到这一点?
在一行中完成所有映射很诱人,但实际上您正在做引用链。您应该确保链中的每个 link 确实存在。
根据消息我猜测 payloadStored 可能不存在或者它不是一个数组或者它在数组中没有元素。要引用数组中的第一个元素,您应该确保一切都是真的。因此,正确的 DW 转换并不优雅,但防弹应该看起来像这样,以确保您不会出现空指针异常:
%dw 1.0
%output application/json
---
{
data: flowVars.payloadStored[0].['data']
} when flowVars.payloadStored is :array and sizeOf (flowVars.payloadStored) > 0
otherwise
{
data: "Not Available"
}
所以你的逻辑应该是这样的:
flowVars.payloadStored is :array and sizeOf (flowVars.payloadStored) > 0 and flowVars.payloadStored[0].['data']!=null
示例在这里https://simpleflatservice.com/mule4/DoubleAndTripleCheckTheInput.html
我想检查数组的第一个元素(对象)中是否存在键。
当我写下以下内容时:
flowVars.payloadStored[0].data!=null
在选择的 when 条件下,出现以下错误:
表达式 'flowVars.payloadStored[0].data!=null' 的执行失败。 -> [错误:空指针:flowVars.payloadStored[0].data],[附近:{... flowVars.payloadStored[0].data ....}],^,[行:1 , 列: 1] -> ",
即使尝试
flowVars.payloadStored[0].['data']!=null
我仍然收到错误消息:
[Error: unterminated string literal],[Near : {... flowVars.payloadStored[0].['data']!=null ....}], ^,[Line: 1, Column: 35]"
任何线索,如何做到这一点?
在一行中完成所有映射很诱人,但实际上您正在做引用链。您应该确保链中的每个 link 确实存在。
根据消息我猜测 payloadStored 可能不存在或者它不是一个数组或者它在数组中没有元素。要引用数组中的第一个元素,您应该确保一切都是真的。因此,正确的 DW 转换并不优雅,但防弹应该看起来像这样,以确保您不会出现空指针异常:
%dw 1.0
%output application/json
---
{
data: flowVars.payloadStored[0].['data']
} when flowVars.payloadStored is :array and sizeOf (flowVars.payloadStored) > 0
otherwise
{
data: "Not Available"
}
所以你的逻辑应该是这样的:
flowVars.payloadStored is :array and sizeOf (flowVars.payloadStored) > 0 and flowVars.payloadStored[0].['data']!=null
示例在这里https://simpleflatservice.com/mule4/DoubleAndTripleCheckTheInput.html