我想在 mule 的 dataweave 中使用“$$”,它将从 1 而不是 0 开始打印
I want to use '$$' in dataweave in mule which will print from 1 instead of 0
这是我从数据库中得到的结果集
{result={name=Sanjay,address=india,phone=xxxxxxxxxx}, {name=Amit,address=india,phone=xxxxxxxxxx}}
我想借助 mule-
中的转换信息转换为以下格式(xml 格式)
<?xml version="1.0" encoding="UTF-8"?>
<resultset>
<lines>
<line1>
<name>Sanjay</name>
<address>india</address>
<phone>xxxxxxxxxx</phone>
</line1>
<line2>
<name>Amit</name>
<address>india</address>
<phone>xxxxxxxxxx</phone>
</line2>
</lines>
</resultset>
我在转换消息中所做的,就像:
{
resultset: {
lines :{(payload.result map
"line$$" :{
name:$.name,
address:$.address,
phone:$.phone
}
)}
}
}
对于这个转换,我得到
<resultset>
<lines>
<line0>
<name>Sanjay</name>
<address>india</address>
<phone>xxxxxxxxxx</phone>
</line0>
<line1>
<name>Amit</name>
<address>india</address>
<phone>xxxxxxxxxx</phone>
</line1>
</lines>
如何解决这个问题?
提前致谢
以下似乎有效:
{
resultset: {
lines :{(payload.result map using (label = "line" ++ ($$ + 1))
(label) : {
name: $.name,
address: $.address,
phone: $.phone
}
)}
}
}
输出:
<?xml version='1.0' encoding='UTF-8'?>
<resultset>
<lines>
<line1>
<name>Sanjay</name>
<address>india</address>
<phone>xxxxxxxxx</phone>
</line1>
<line2>
<name>Amit</name>
<address>india</address>
<phone>xxxxxxxxxx</phone>
</line2>
</lines>
</resultset>
这个替代方案也给出相同的结果
%dw 1.0
%output application/xml
---
{
resultset: {
lines : {
(payload.result map {
("line" ++ ($$ + 1)) : {
name: $.name,
address: $.address,
phone: $.phone
}
})
}
}
}
将行结构包裹在大括号map { ... }
内,直接填充key("line" ++ ($$ + 1))
在 Mule 中 $$ 指向当前索引值,就像 C 语言一样,这个索引从 0 开始,所以 $$+1 是唯一的方法。
这是我从数据库中得到的结果集
{result={name=Sanjay,address=india,phone=xxxxxxxxxx}, {name=Amit,address=india,phone=xxxxxxxxxx}}
我想借助 mule-
中的转换信息转换为以下格式(xml 格式)<?xml version="1.0" encoding="UTF-8"?>
<resultset>
<lines>
<line1>
<name>Sanjay</name>
<address>india</address>
<phone>xxxxxxxxxx</phone>
</line1>
<line2>
<name>Amit</name>
<address>india</address>
<phone>xxxxxxxxxx</phone>
</line2>
</lines>
</resultset>
我在转换消息中所做的,就像:
{
resultset: {
lines :{(payload.result map
"line$$" :{
name:$.name,
address:$.address,
phone:$.phone
}
)}
}
}
对于这个转换,我得到
<resultset>
<lines>
<line0>
<name>Sanjay</name>
<address>india</address>
<phone>xxxxxxxxxx</phone>
</line0>
<line1>
<name>Amit</name>
<address>india</address>
<phone>xxxxxxxxxx</phone>
</line1>
</lines>
如何解决这个问题? 提前致谢
以下似乎有效:
{
resultset: {
lines :{(payload.result map using (label = "line" ++ ($$ + 1))
(label) : {
name: $.name,
address: $.address,
phone: $.phone
}
)}
}
}
输出:
<?xml version='1.0' encoding='UTF-8'?>
<resultset>
<lines>
<line1>
<name>Sanjay</name>
<address>india</address>
<phone>xxxxxxxxx</phone>
</line1>
<line2>
<name>Amit</name>
<address>india</address>
<phone>xxxxxxxxxx</phone>
</line2>
</lines>
</resultset>
这个替代方案也给出相同的结果
%dw 1.0
%output application/xml
---
{
resultset: {
lines : {
(payload.result map {
("line" ++ ($$ + 1)) : {
name: $.name,
address: $.address,
phone: $.phone
}
})
}
}
}
将行结构包裹在大括号map { ... }
内,直接填充key("line" ++ ($$ + 1))
在 Mule 中 $$ 指向当前索引值,就像 C 语言一样,这个索引从 0 开始,所以 $$+1 是唯一的方法。