Как я могу создать HashMap в DataWeave2 внутри преобразования в Mule 4?

Мне нужно создать HashMap внутри сообщения преобразования в Mule 4 для отправки в службу.

Я пытался сделать что-то вроде этого:

 %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 \ x0 \ x11java.util.HashMap0 \ x0 \ 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 "данные": "{}", "attribute1": "att1", ..... '

Есть идеи, как создать обычную хеш-карту?

Ожидаю получить:

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


person user3084383    schedule 17.09.2019    source источник
comment
вам нужно будет сопоставить application/json в начале и проверить вывод   -  person Ven    schedule 17.09.2019
comment
Очевидно, что служба получает Java HashMap и ей не нравится. Обычно вы должны отправить JSON, как указано в @Ven.   -  person aled    schedule 18.09.2019


Ответы (1)


Поэтому, если вы хотите, чтобы на выходе был экземпляр «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, и это делается с помощью output application / json

person machaval    schedule 17.09.2019