Mule 4:如何从数组生成文本文件

Mule 4 : how to generate a Text file from an Array

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

  1. 使用 Dataweave 映射方法从 json 有效负载创建 Java 数组
  2. 使用 For each 组件遍历数组
  3. 在 foreach 中使用 File:Write 组件并通过将它们转换为字符串来写入元素,如下所示:write(payload,"application/java") 并将文件写入模式设置为追加

有没有更好的方法来实现这个?

数组示例:

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

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

Amam ssss Bibek Raghu Rajeev 
Apple Banana Orange Pineapple Pears 

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

%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,但生成的文件将是包含生成的输出的文本文件(文件名由 [=24= 的“路径”属性 确定] 组件,并且可以类似于“my-text-file.txt”,例如)。

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

也许这就是您要找的

%dw 2.0
output text/plain
var inputText = [
  ["Amam","ssss","Bibek","Raghu","Rajeev"], 
  ["Apple","Banana","Orange","Pineapple","Pears"]
] 
---
(inputText map ($ joinBy " ")) joinBy "\n"

这是 Olivier 在上一个答案中使用的格式输入。

如前所述输入格式:

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

最初给出的 JSON 或 Java 无效,DW 将在尝试解析它时抛出错误。