如何在Mule 4的转换中的DataWeave2中创建HashMap?

时间:2019-09-17 07:49:14

标签: hashmap dataweave mulesoft mule4

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

我试图做这样的事情:

#include "pch.h"
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <map>
#include <string>
#include <vector>

class Foo {
public:
    Foo() { mi = 1; }
    ~Foo() {}

    // NO COPIES.   
    Foo(const Foo &) = delete;
    Foo& operator = (const Foo &) = delete;

private:
    int mi;
};

class MyFoo : public Foo {
public:
    MyFoo() :Foo() {
        mj = 2;
        mk = nullptr;
    }
    ~MyFoo() {}

    // NO COPIES.
    MyFoo(const MyFoo &) = delete;
    MyFoo& operator = (const MyFoo &) = delete;

private:
    int mj;
    int* mk;
};

class YourFoo : public Foo {
public:
    YourFoo() :Foo() { mj = 2; }
    ~YourFoo() {}

    // NO COPIES.
    YourFoo(const YourFoo &) = delete;
    YourFoo& operator = (const YourFoo &) = delete;

private:
    int mj;
};


int main()
{
    std::map<int, std::shared_ptr<Foo> > objects;
    objects.insert(std::pair<int, std::shared_ptr<Foo> >(0, new Foo()));

}

因为当我使用Java库成功创建一个字符串时,我认为我可以对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'> )  

一开始,我只是尝试这样映射:

 %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'       }) 

但是问题在于该服务收到了以下内容:

'\ 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 \ x00 \ x0cw \ x08 \ x00 \ x00 \ x00 \ x00 \ x10 \ x00 \ x00 \ x00 \ x06t \ x00 \ x04datat \ x06 \ x19 {\ n“ data”:“ {}”,“ attribute1”:“ att1”,.....'

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

我希望收到:

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

1 个答案:

答案 0 :(得分:3)

因此,如果您希望输出为“ 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