Mule 如何使用sftp:content从内存编写sftp消息

Mule 如何使用sftp:content从内存编写sftp消息,mule,dataweave,mulesoft,Mule,Dataweave,Mulesoft,我正在尝试使用sftp:write和sftp:content从内存创建一个sftp文件。我的dataweave代码是: <sftp:write doc:name="sftp from memory" doc:id="01bee2a1-69ad-4194-8ec8-c12852521e87" config-ref="SFTP_Config" path="#[vars.sftpFileName]" createPa

我正在尝试使用sftp:write和sftp:content从内存创建一个sftp文件。我的dataweave代码是:

<sftp:write doc:name="sftp from memory" doc:id="01bee2a1-69ad-4194-8ec8-c12852521e87" config-ref="SFTP_Config" path="#[vars.sftpFileName]" createParentDirectories="false">
    <sftp:content><![CDATA[%dw 2.0
        output application/csv
        ---
        payload.toplevel.secondlevel.bottomlevel[0],
        payload.more.andmore.andstillmore[0]
        ]]>
    </sftp:content>
</sftp:write>

我使用的是Mule服务器的4.2.2版和SFTP组件的1.3.2版。

您实际上不是在传递dataweave,而是在传递字符串。要使用dataweave时,请按字段上的
fx
按钮。XML将如下所示。请注意额外的
#[
?表明这是dataweave。您的dataweave也无效;您必须输出一个对象或一个对象数组;要使您的输出成为一个对象,请将其包装在
{
}中与JSON一样,使用键值对。将其输出到CSV时,除非在输出行中包含
header=false
,否则键值将用作标题行:


您实际上不是在传递dataweave,而是在传递字符串。在使用dataweave时,请按字段上的
fx
按钮。XML将如下所示。请注意额外的
#[
?表示这是dataweave。您的dataweave也无效;您必须输出一个对象或对象数组;若要使输出成为对象,请将其包装在
{
中。
}
与JSON一样,使用键值对。将其输出到CSV时,除非在输出行中包含
header=false
,否则键值将用作标题行:



能否请您提供JSON格式的有效负载示例?谢谢。Mule版本?SFTP连接器版本?我已将Mule版本和SFTP版本添加到我的问题中。能否请您提供JSON格式的有效负载示例?谢谢。Mule版本?SFTP连接器版本?我已将Mule版本和SFTP版本添加到我的问题中。仅to确保我理解:“文字模式”以文字或字符串的形式传递内容,而“表达式模式”以dataweave脚本的形式执行内容。它抱怨第一个有效负载行末尾的逗号:无效输入“,”,预期函数调用或?(第4行,第52列):@CountBoxer That is correct-表达式模式表示传入dataweave表达式,而文字模式表示文字字符串。使用${some.property}之类的属性占位符时,请记住您仍然使用文字模式,因为这本质上是一个模板系统。该值在应用程序运行之前被替换。是的,我没有注意到,但您的dataweave本身无效。它必须是有效的结构。我已更新了我的答案以反映这一点;关键字名称将用作CSV标题行。如果您是dataweave的新手,请检查我不记得以前解释过的文字/表达式模式,谢谢!我试图访问dwlang.fun,但无法访问。我稍后将重试。感谢您的帮助和解释!@CountBoxer-如果我正确理解了您的问题,您是在问如何处理包含嵌套元素的数据结构?CSV没有支持任何类型的嵌套结构,因此您需要将所有内容映射到一个单层对象中。如果您的输出中需要嵌套结构,并且希望使用平面文件格式,则mulesoft支持平面文件。有关转换数据的更多详细信息,我建议发布另一个带有示例输入和所需示例输出的问题,w在你有问题的部分周围有一个特定的问题。为了确保我理解:“文字模式”作为文字或字符串传递内容,而“表达式模式”将内容作为dataweave脚本执行。它抱怨第一个有效负载行末尾的逗号:无效输入“,”,预期函数调用或?(第4行,第52列):@CountBoxer That is correct-表达式模式表示传入dataweave表达式,而文字模式表示文字字符串。使用${some.property}之类的属性占位符时,请记住您仍然使用文字模式,因为这本质上是一个模板系统。该值在应用程序运行之前被替换。是的,我没有注意到,但您的dataweave本身无效。它必须是有效的结构。我已更新了我的答案以反映这一点;关键字名称将用作CSV标题行。如果您是dataweave的新手,请检查我不记得以前解释过的文字/表达式模式,谢谢!我试图访问dwlang.fun,但无法访问。我稍后将重试。感谢您的帮助和解释!@CountBoxer-如果我正确理解了您的问题,您是在问如何处理包含嵌套元素的数据结构?CSV没有支持任何类型的嵌套结构,因此您需要将所有内容映射到一个单层对象中。如果您的输出中需要嵌套结构,并且希望使用平面文件格式,则mulesoft支持平面文件。有关转换数据的更多详细信息,我建议发布另一个带有示例输入和所需示例输出的问题,w在你有问题的部分周围有一个特别的问题。
%dw 2.0
output application/csv
---
payload.toplevel.secondlevel.bottomlevel[0]
payload.more.andmore.andstillmore[0]
<sftp:write doc:name="sftp from memory" doc:id="01bee2a1-69ad-4194-8ec8-c12852521e87" config-ref="SFTP_Config" path="#[vars.sftpFileName]" createParentDirectories="false">
    <sftp:content><![CDATA[#[%dw 2.0
        output application/csv
        ---
        {
            someKeyName: payload.toplevel.secondlevel.bottomlevel[0],
            someOtherKeyName: payload.more.andmore.andstillmore[0]
        }]]]>
    </sftp:content>
</sftp:write>