Dataweave代码不工作骡子4这是在mule3工作

问题描述 投票:0回答:1

下面的代码片段是在3.8的工作,但在4.1不工作:

output application/java
var csv = payload
---
(csv map $ reduce ((val,acc) -> ((acc) ++ ((val)) ))) map ($ replace ',' with '\t')

input payload: 

{"D01":{"AK":"D,01,AK,0,0,0,0,0,-2.89,0.00,0,0,0,0,0",
        "AL":"D,01,AL,829.23,18506.35,0,0.00,0,-6610.91,0.00,0,0,0,159.66,-1.94"},
"D02.1":{"AK":"D,02.1,AK,0,0,0,0,0,-6.76,0.00,0,0,0,0,0",
        "AL":"D,02.1,AL,7733.77,304148.90,0,0.00,0,-42791.15,0.00,0,0,0,1347.09,-8.88"}
} 

在这里输入代码

预期输出:[ “d \ T01 \的tAK \ T0 \ T0 \ T0 \ T0 \ T0 \叔2.89 \ t0.00 \ T0 \ T0 \ T0 \ T0 \ T0”,“d \ T01 \ TAL \ t829.23 \ t18506.35 \ T0 \ t0.00 \ T0 \叔6610.91 \ t0.00 \ T0 \ T0 \ T0 \ t159.66 \叔1.94" ,“d \ t02.1 \的tAK \ T0 \ T0 \ T0 \ T0 \ T0 \叔6.76 \ t0.00 \ T0 \ T0 \ T0 \ T0 \ T0" ,“d \ t02.1 \ TAL \ t7733.77 \ t304148.90 \ T0 \ t0.00 \ T0 \吨-42791.15 \ t0.00 \ T0 \ T0 \ T0 \ t1347.09 \叔8.88" ]

我得到以下错误:

org.mule.runtime.core.internal.exception.OnErrorPropagateHandler:


消息:“你调用的函数‘地图’与这些参数: 1:字符串( “{\” D01 \ “:{\” AK \ “:\” d,01,AK,0,0,0,0,0,-2.89,0.00,0,0,0,0, 0 \ “\ ”AL \“:\” d,01,A ...) 2:功能(($:任意,$$:任何) - > ???)

不过,预计这些类型的参数: 1:阵列 2:功能

13 | (CSV地图$减少((VAL,ACC) - >((ACC)++((VAL)))))的地图($与 '\ T' 替换 '')^^^^^^^^^

mule anypoint-studio payload dataweave
1个回答
1
投票

我觉得有问题,map在DataWeave 2不上Object工作(见changes)。 DataWeave 1允许这一点,因此你的代码是有效的DataWeave 1。

根据与DataWeave 1的输出,我认为你可以使用下面的DataWeave 2码 -

%dw 2.0
output application/java
var csv = payload
---
flatten ((csv pluck $) map ($ pluck $)) map ($ replace ',' with '\t')

pluck将对象拆分成两个阵列 - 值($)和键($$)。

© www.soinside.com 2019 - 2024. All rights reserved.