情况1)我将键值对中的对象直接交给设置的有效载荷,然后将其交给我有一个记录器的foreach,它只需打印有效载荷。
内集payload=>
{
"msg": {
"status": "ok"
},
"msg": {
"status": "ok2"
}
}例2)我将键值对中的对象直接给出输出am /json的设置有效载荷,然后将其交给我有一个记录器的foreach,该记录器只需打印有效负载。
内集有效载荷=>
output application/json
---
{
"msg": {
"status": "ok"
},
"msg": {
"status": "ok2"
}
}现在,当我运行第一种情况时,我得到了一个错误--每种情况下都成功地运行了第二种情况。在这两种情况下,foreach配置是相同的。
我得到的错误是=>
Foreach does not support 'java.util.Map' with no collection expression. To iterate over Map
entries use '#[dw::core::Objects::entrySet(payload)]'所以我有三个问题:
(
发布于 2021-09-30 12:42:51
(
没有默认情况。在Mule 4中,表达式语言是DataWeave 2.x。如果输出格式丢失,DataWeave将尝试从脚本中推断它。它可能并不总是成功的,您需要显式地添加它。
注意,您的第一个案例不是JSON。它看起来像JSON,但是它是一个DataWeave脚本,没有显式的输出格式。DataWeave正在生成一个Java作为输出来表示一个DataWeave对象,即键值的集合。
第二个是DataWeave,但是执行DataWeave脚本生成的输出显式地是一个JSON对象,媒体类型也设置为application/json,因此流中的消息处理器知道应该如何解析它。
取决于特定的实现类,它可能会工作,但通常假设不是。在这种情况下,第一个是不可迭代的Map。如果您想这样做,错误消息告诉您要在Map中的条目上迭代表达式。我不太清楚为什么要用foreach迭代JSON对象。它可能是JSON解析器实现的一个特性。
https://stackoverflow.com/questions/69386407
复制相似问题