mule:将地图列表合并为单个地图

时间:2017-12-02 00:18:27

标签: mule

我已经在我的流程中散布,其输出是地图列表,如何将其转换为骡子中的单个地图?

我尝试过combine-collections-transfomer,flatten payload。似乎没什么用。

3 个答案:

答案 0 :(得分:3)

您可以关注数据编织代码,但它会覆盖重复的密钥

// getFile() method returns the input stream of a local or online file
InputStream fileStream = getFile(source);

// Read the value of the InputStream and pass it to the
// Boilerpipe DefaultExtractor in order to extract the text
String html = readFromStream(fileStream);
String text = DefaultExtractor.INSTANCE.getText(html);

// Convert the value read from fileStream to a new ByteArrayInputStream
fileStream = new ByteArrayInputStream(html.getBytes("UTF-8"));

// Extract text and metadata via Apache Tika
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
ParseContext context = new ParseContext();
AutoDetectParser parser = new AutoDetectParser();
parser.parse(fileStream, handler, metadata, context);

Dataweave Snapshot

希望这有帮助。

答案 1 :(得分:0)

我建议使用自定义Java Transformer,以便您可以轻松处理特殊情况,例如具有不同值的重复键。 DataWeave函数也可以做到这一点,但你需要Mule EE。

使用Transformer这是一个简单的Java代码问题:

private List<String> list = new ArrayList<>();

然后在您的流程中使用此变换器。 See the docs for details.

答案 2 :(得分:0)

你有多种方法可以做到这一点,其中一个是flatten运算符,它将2个数组合并为一个数组。另一种方法是通过Dataweave Transform map运算符并根据您的要求合并它们。