首页 > 解决方案 > Mule 4:如何从数组生成文本文件

问题描述

我必须从一个数组生成一个文本文件。为此,我采用以下方法:

  1. 使用 Dataweave 映射方法从 json 有效负载创建 Java 数组
  2. 使用 For 每个组件来迭代数组
  3. 在 foreach 中使用 File:Write 组件并通过将它们转换为 String 来写入元素,如下所示:write(payload,"application/java")并将 File Write Mode 设置为 Append

有没有更好的方法来实现这一目标?

数组示例:

[["Amam","ssss","Bibek","Raghu","Rajeev"],["Apple","Banana","Orange","Pineapple","Pears"]] 

在文本文件中,我希望输出为:

Amam ssss Bibek Raghu Rajeev 
Apple Banana Orange Pineapple Pears 

标签: dataweavemule4

解决方案


您不需要使用 foreach 遍历数组。您可以直接使用 File:Write 组件,在其“内容”属性中使用以下 dataweave 表达式:

%dw 2.0
output application/csv header=false
---
payload map (item, index) -> val: item joinBy " "

此 dataweave 表达式具有以下输入:

[
  ["Amam","ssss","Bibek","Raghu","Rajeev"], 
  ["Apple","Banana","Orange","Pineapple","Pears"]
] 

结果是:

Amam ssss Bibek Raghu Rajeev
Apple Banana Orange Pineapple Pears

虽然 Dataweave 表达式中的输出格式是 CSV,但结果文件将是一个包含结果输出的文本文件(文件名由 File:Write 组件的“路径”属性确定,可以是类似于“my-文本文件.txt”,例如)。

此处描述了支持的输出格式及其属性:https ://docs.mulesoft.com/mule-runtime/4.3/dataweave-formats


推荐阅读