我需要在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'
答案 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