【问题标题】:How do I modify Mule payload variables?如何修改 Mule 有效负载变量?
【发布时间】:2012-09-18 13:43:36
【问题描述】:

使用 Mule 3.3,我有一个有效负载(它以 JSON 开头,我正在使用 java.util.HashMap 将其转换为对象)。我可以使用以下方法从 JDBC 查询中很好地访问变量:

#[message.payload.AddJob.variable1]

如何添加新变量(比如变量 2)或修改现有变量的值?

我试过了:

<message-properties-transformer doc:name="Message Properties">
    <add-message-property key="message.payload.AddJob.variable2" value="&quot;hello&quot;"/>
</message-properties-transformer>

没有效果。

我还按照此处的建议尝试了一个 groovy 脚本(如下):How to add additional data to a mule payload?,但它用“hello”覆盖了整个有效负载,而不仅仅是变量 2。

payload['AddJob.variable2'] = 'hello'

【问题讨论】:

  • 我不确定 AddJob 会被称为什么。 Mule 在转换为 Object 之前接收的 JSON 数据如下所示: {"AddJob":{"Variable1":12345,"Variable2":67890}}
  • 酷,那应该是地图的地图。

标签: mule


【解决方案1】:

用什么:

<expression-transformer
            expression="#[message.payload.AddJob.variable2='hello';message.payload]" />

?

【讨论】:

  • 表达式转换器没有做我想做的事,它覆盖了整个有效负载,而不仅仅是一个变量(或映射?)。这是表达式转换器之前 echo 组件的输出:* Message received in service: nwa_soap_add_job_flow. Content is: * * '{AddJob={JobNumber=12345, Variable2=B5}}' 表达式转换器之后:* Message received in service: nwa_soap_add_job_flow. Content is: 'hello' * 我想要的结果是:{AddJob={JobNumber=12345, Variable2=hello}}
  • 我的错,我忘了返回带有添加元素的地图,我相应地更改了表达式。
  • 这适用于添加新变量和修改现有变量。谢谢!
  • 这为我节省了很多时间,谢谢...我没有添加最后一个 message.payload 语句 -_-
猜你喜欢
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多