Node-Red中JSONata表达式调用msg.counter字段失效问题排查
Node-Red JSONata表达式问题解析
问题原因
你遇到的问题源于JSONata的语法解析规则:当在数组索引位置直接写counter时,JSONata会把它当作字符串字面量处理,而非引用msg对象中的counter字段。实际执行的是$keys(payload)["counter"],但$keys(payload)返回的是["cv", "fg"],不存在名为"counter"的元素,所以得不到正确结果。
而单独使用counter时,JSONata会直接解析为引用msg的字段;直接输入0作为索引时,属于数字索引,自然能正常返回结果。
正确写法
以下两种写法都能正确引用counter的值作为数组索引:
- 使用
$前缀明确引用上下文变量:$keys(payload)[$counter] - 明确指定根上下文的
counter字段:$keys(payload)[$.counter]
这两种写法都会将counter解析为msg中的数字0,执行后返回预期的"cv"。
内容的提问来源于stack exchange,提问作者M.mhr
相关产品推荐
相关产品推荐

