Mule Dataweave,如何在生成csv时删除额外的\n?

Mule Dataweave,如何在生成csv时删除额外的\n?,mule,dataweave,mulesoft,Mule,Dataweave,Mulesoft,我正在生成要发送到SFTP位置的csv文件。 该文件按预期创建,但由额外的\n 是否仍有删除它的方法 输入: [ { "reference": "TPL", "newId": "07223455", "dateCreated": "020200509", "error": "000" }, { "reference": "TIN", "newId": "07123455",

我正在生成要发送到SFTP位置的csv文件。 该文件按预期创建,但由额外的\n 是否仍有删除它的方法

输入:

[
    {
        "reference": "TPL",
        "newId": "07223455",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "TIN",
        "newId": "07123455",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "THW",
        "newId": "05550910",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "THW",
        "newId": "05533112",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "TSB",
        "newId": "05567865",
        "dateCreated": "020200509",
        "error": "000"
    }
]
Dataweave:

%dw 2.0
output application/csv header = false
import * from dw::core::Strings
---
payload filter ( $.error == '000' ) map (
    values:
       rightPad($.reference, 16)
    ++ rightPad('0', 1)
    ++ rightPad($.newId, 9)
    ++ rightPad('0', 1)
    ++ rightPad($.dateCreated,9)
    ++ rightPad("", 16)
    ++ rightPad("P",1)
    ++ rightPad("", 103)
 ) 
结果:

TPL             07223455  020200509                 P                                                                                                       
TIN             07123455  020200509                 P                                                                                                       
THW             05550910  020200509                 P                                                                                                       
THW             05533112  020200509                 P                                                                                                       
TSB             05567865  020200709                 P                                                                                                       
TSB             05533112  020200509                 P                                                                                                       
我试着去掉最后一行

result[0 to sizeOf(result) -1]

但是\n默认情况下会添加到每行的末尾

您始终可以这样做:

%dw 2.0
output text/plain
import * from dw::core::Strings
---
write(payload filter ( $.error == '000' ) map (
    values:
       rightPad($.reference, 16)
    ++ rightPad('0', 1)
    ++ rightPad($.newId, 9)
    ++ rightPad('0', 1)
    ++ rightPad($.dateCreated,9)
    ++ rightPad("", 16)
    ++ rightPad("P",1)
    ++ rightPad("", 103)
 ), "application/csv", { header: false})[0 to -2]

编辑以包括关闭标题。

您始终可以执行以下操作:

%dw 2.0
output text/plain
import * from dw::core::Strings
---
write(payload filter ( $.error == '000' ) map (
    values:
       rightPad($.reference, 16)
    ++ rightPad('0', 1)
    ++ rightPad($.newId, 9)
    ++ rightPad('0', 1)
    ++ rightPad($.dateCreated,9)
    ++ rightPad("", 16)
    ++ rightPad("P",1)
    ++ rightPad("", 103)
 ), "application/csv", { header: false})[0 to -2]

编辑以包括关闭标题。

您可能希望尝试以下操作:

%dw 2.0
output application/flatfile schemaPath="schema.ffd"
var data = [
    {
        "reference": "TPL",
        "newId": "07223455",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "TIN",
        "newId": "07123455",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "THW",
        "newId": "05550910",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "THW",
        "newId": "05533112",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "TSB",
        "newId": "05567865",
        "dateCreated": "020200509",
        "error": "000"
    }
]
---
data map {($ - "error"), p: "P"}
您必须在类路径下创建一个文件。我在src/main/resources下创建了一个包含模式的文件,我称之为schema.ffd,您可以在下面看到它的内容:

form: FIXEDWIDTH
name: my-flat-file
values:
- { name: 'reference', type: String, length: 16 }
- { name: 'newId', type: String, length: 10 }
- { name: 'dateCreated', type: String, length: 25 }
- { name: 'p', type: String, length: 104 }
我得到以下结果作为输出:

TPL             07223455  020200509                P                                                                                                       
TIN             07123455  020200509                P                                                                                                       
THW             05550910  020200509                P                                                                                                       
THW             05533112  020200509                P                                                                                                       
TSB             05567865  020200509                P                                                                                                       

您可能想尝试以下方法:

%dw 2.0
output application/flatfile schemaPath="schema.ffd"
var data = [
    {
        "reference": "TPL",
        "newId": "07223455",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "TIN",
        "newId": "07123455",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "THW",
        "newId": "05550910",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "THW",
        "newId": "05533112",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "TSB",
        "newId": "05567865",
        "dateCreated": "020200509",
        "error": "000"
    }
]
---
data map {($ - "error"), p: "P"}
您必须在类路径下创建一个文件。我在src/main/resources下创建了一个包含模式的文件,我称之为schema.ffd,您可以在下面看到它的内容:

form: FIXEDWIDTH
name: my-flat-file
values:
- { name: 'reference', type: String, length: 16 }
- { name: 'newId', type: String, length: 10 }
- { name: 'dateCreated', type: String, length: 25 }
- { name: 'p', type: String, length: 104 }
我得到以下结果作为输出:

TPL             07223455  020200509                P                                                                                                       
TIN             07123455  020200509                P                                                                                                       
THW             05550910  020200509                P                                                                                                       
THW             05533112  020200509                P                                                                                                       
TSB             05567865  020200509                P                                                                                                       

你能提供输入数据吗?你是否对目标系统不喜欢尾随行有问题?我不确定你生成的是CSV,我认为它看起来更像一个平面文件,或者更像一个固定宽度的文件。当我有一点额外的时间时,我会为你做的。也许你需要重新考虑你的输出媒体-type@MichaelJones是的,目标系统无法读取文件。您可以提供输入数据吗?您是否对目标系统不喜欢尾随行有问题?我不确定您生成的是CSV,我认为它更像是平面文件还是固定宽度更好。当我有一点额外的时间时,我会为你做的。也许你需要重新考虑你的输出媒体-type@MichaelJones是,目标系统无法读取该文件