【问题标题】:Reading CSVs w/o Headers in DataWeave 2.0在 DataWeave 2.0 中读取没有标题的 CSV
【发布时间】:2021-01-08 02:20:17
【问题描述】:

如何在 DataWeave 2.0 中解析没有标头的 CSV?

我有以下 CSV:

Chris,Doe,Student
Bob,Smith,Teacher

我只是想像这样将其转换为 JSON:

[
  [ "Chris", "Doe", "Student" ],
  [ "Bob", "Smith", "Teacher" ]
]

甚至这个:

[
  {"0": "Chris", "1": "Doe", "2": "Student" },
  {"0": "Bob", "1": "Smith", "2": "Teacher" }
]

这是我的 DataWeave:

%dw 2.0
input payload application/csv header=false
output application/json
---
payload

但这是从 DW 脚本返回的有效负载:

[
  {
    "Chris": "Bob",
    "Doe": "Smith",
    "Student": "Teacher"
  }
]

我尝试过处理元数据,指定包含/排除标头的 CSV 元数据类型,但没有运气。

【问题讨论】:

    标签: csv dataweave mule4


    【解决方案1】:

    这在运行时不起作用,因为输入指令在 mule reader 中不起作用,需要在值的源上配置属性。转到您的值的来源(文件:读取,http:listener 等)单击 MimeType 那里去一个选择应用程序/csv,下面有 mimeType 属性。在那里选择header | 错误

    【讨论】:

    • 谢谢。我有没有办法有条件地做到这一点?例如,假设一些来自 file:read 的文件有一个标题,而另一些则没有。我可以以编程方式检查标头是否存在,但似乎我什至无法执行诸如使用选择路由器之类的事情,其中​​一个分支解析带有标头而另一个没有标头。这是真的吗?
    【解决方案2】:

    您在其中发布的脚本对我有用。稍微修改了一下,附上下面的截图。

    【讨论】:

    • 您是在独立的 Playground 中还是在 Studio 中执行此操作(什么 Studio 版本和运行时)?
    • 为了复制您所看到的内容,我删除了输入指令,并且只获得了输出中的第二行(类似于 Studio 的行为方式)。要使其工作,您必须在源代码显式配置,如 Mariano 在下面的答案中提到的那样。
    猜你喜欢
    • 2019-08-23
    • 2023-02-14
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多