首页 > 解决方案 > 如何在 Mule 4 的转换中的 DataWeave2 中创建 HashMap?

问题描述

我需要在 Mule 4 的转换消息中创建一个 HashMap 以发送到服务。

我试图做这样的事情:

 %dw 2.0
 import HasMap from java!java::util::HashMap
 output application/java
 ---
 HasMap ( <'data': write(payload, "application/json")>,
 <'attribute1': 'att1'>,
 <'attribute2': 'att2'>,
 <'attribute3': 'att3'> )  

   

    因为当我使用 java 库成功创建了一个字符串时,我认为我可以对 HashMap 做同样的事情,但它仍然无法正常工作:

 %dw 2.0
 import valueOf from java!java::lang::String
 output application/java
 ---
 valueOf({
 data: write(payload, "application/json"),
 atrribute1: 'att1',
 atrribute2: 'att2',
 atrribute3: 'att3'       }) 

一开始,我试着像这样映射:

 %dw 2.0
 output application/java
 ---
 {

 "data": write(payload, "application/json"),
 "attribute1": "att1",
 "attribute2": "att2",
 "attribute3": "att3"

 }

但问题是该服务收到了这样的信息:

'\xac\xed\x00\x05sr\x00\x17java.util.LinkedHashMap4\xc0N\\x10l\xc0\xfb\x02\x00\x01Z\x00\x0baccessOrderxr\x00\x11java.util.HashMap\x05\x07\xda \xc1\xc3\x16`\xd1\x03\x00\x02F\x00\nloadFI\x00\tthresholdxp?@\x00\x00\x00\x00\x00\x0cw\x08\x00\x00\x00\x10\x00\ x00\x00\x06t\x00\x04datat\x06\x19{\n “数据”:“{}”,“属性1”:“att1”,.....'

关于如何创建普通哈希图的任何想法?

我希望收到:

'数据':'{....}','attribute1':'att1','attribute2':'att2','attribute3':'att3'

标签: hashmapdataweavemulesoftmule4

解决方案


因此,如果您希望输出是“java.util.HashMap”实例,那么您需要使用

%dw 2.0
 output application/java
 ---
 {

 "data": write(payload, "application/json"),
 "attribute1": "att1",
 "attribute2": "att2",
 "attribute3": "att3"

 } as Object {class : "java.util.HashMap"}

尽管我认为这不是您真正想要的,因为 HashMap 不是您想要尝试的服务,但很可能您希望全部成为 json 并且通过使用输出 application/json来完成


推荐阅读