我想在 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 是唯一的方法。