【问题标题】:Data Weave not able to escape the string inside double quotes- Mule ESBData Weave 无法转义双引号内的字符串 - Mule ESB
【发布时间】:2015-10-30 02:01:33
【问题描述】:

我正在尝试将 csv 转换为 csv。我的 deliliter 是,,输入中有某些文本也带有逗号示例:"Fun,Chair,tables" 但它会用引号括起来。 Data Weave 认为这是分隔符,并在响应中分隔到不同的列。

请找到输入 CSV 文件

 sequence,items
 1,Fun
 2,"Fun,chairs,tables"
 3,Games

但得到响应

Number,itemDetails
1,Fun
2,Fun\,Chair\,tables
3,Games

在上述回复中,后两个被拆分,这是我没想到的 我的数据编织器

  %dw 1.0
  %output application/csv header=true 
   ---
  payload map { 
   Number:$.sequence,
   itemDetails:$.items

预期的反应是

 Number,itemDetails
 1,Fun
 2,"Fun,chairs,tables"
 3,Games

这里的问题是"Fun,chairs,tables",双引号应该作为测试字段,而不是data weaver 将其视为分隔符。 在数据编织标头中,尝试使用quote= " "escape=" "。但不工作。 我在 Datamapper 上尝试过同样的事情,工作得很好。相信需要在标题上做一些事情,但不确定是什么?? 还检查了 Data Weave CSV 设置中读取配置属性中的属性。没有帮助。

编辑: 使用 DataWeaver 转义序列, %output application/csv header=true escape="\"" 以下是回复

Number,itemDetails
1,Fun
2,Fun",Chair",tables
3,Games

您的想法和建议会有所帮助。提前致谢。

【问题讨论】:

  • 你有解决方案吗?我们确实有同样的问题
  • @tortoise:Nope.I didn't find the solution.因此尚未从 Datamapper 更新到 DW。如果您发现任何内容,请在此处发布。

标签: mule mule-studio mule-component dataweave


【解决方案1】:

你试过 escape="\"" 吗?我想这会转义双引号

【讨论】:

  • 我已经尝试过转义。似乎没有工作!
  • 使用转义序列响应编辑的问题。请提供您的想法。谢谢。
【解决方案2】:

试试

%output application/csv quoteValues=true ,escape =" "

【讨论】:

  • 请使用edit链接解释这段代码是如何工作的,不要只给出代码,因为解释更有可能帮助未来的读者。另见How to Answersource
【解决方案3】:

您可以自己将值括在引号中

%dw 1.0
%output application/csv header=true
---
payload map ((item , index) -> {
    Number: item.sequence,
    itemDetails: item.items
} when index != 1
otherwise {
    Number: item.sequence,
    itemDetails: "\"" ++ item.items ++ "\""
})

输出

Number,itemDetails
1,Fun
2,"Fun\,chairs\,tables"
3,Games

【讨论】:

    【解决方案4】:

    我们必须改变 reader 属性,如下所示。我在读取 csv 输入时也遇到了同样的问题。

    <dw:reader-property name="escape" value="&quot;"/>
    

    以上在我的情况下工作并解决了问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多