dataweave - Mule 4:如何从数组生成文本文件
问题描述
我必须从一个数组生成一个文本文件。为此,我采用以下方法:
- 使用 Dataweave 映射方法从 json 有效负载创建 Java 数组
- 使用 For 每个组件来迭代数组
- 在 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
解决方案
您不需要使用 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
推荐阅读
- javascript - css 不是 AngularJS 中现有元素的函数
- spring - 基于 Spring Security URL 的授权
- vue.js - 外部 css 表覆盖默认的 Vuetify 组件样式
- python - 如何将文件中的函数导入木星笔记本?
- testing - 如何使用自动化测试 activiti 框架?
- java - 如何显示两个骰子
- laravel-5.7 - 方法 Illuminate\Database\Eloquent\Collection::categories 不存在
- xamarin.forms - 需要一种方法在 Android 和 iOS 上的 Xamarin Forms 中持续跟踪用户的当前位置
- android - Flutter 中具有本地化功能的计时器选择器
- r - cforest,varimp 错误:使用非统一权重可能会产生误导性结果