mule中的循环内变换

mule中的循环内变换,mule,mule-component,anypoint-studio,Mule,Mule Component,Anypoint Studio,我是mule的新手,必须将json转换为xml %dw 1.0 %input payload application/json %output application/xml --- {( items: { Id:payload.abc.productid, ProductPrice:payload.abc.price, Name:payload.abc.productname } )} 这是我正在测试的模式 { "abc": { "p

我是mule的新手,必须将json转换为xml

%dw 1.0
%input payload application/json
%output application/xml
---
{( 
items:
{


    Id:payload.abc.productid,
    ProductPrice:payload.abc.price,
    Name:payload.abc.productname

}

)}
这是我正在测试的模式

{
    "abc":
    {
    "productid":"4",
    "productname":"Shampoo",
    "price":["1000","2000","3000"]
    }   

    }
如果我在数组price中只发送一个项目,它会生成正确的xml,但如果我发送多个元素,它会给出此错误

无法将:数组强制为:对象

我知道我应该在它里面循环,但我不知道如何使它成为可能


请导游

您可以使用
map
关键字在Dataweave中迭代数组。查看文档。

您可以使用
map
关键字在Dataweave中迭代数组。请查看文档。

您可以使用以下内容:

{
items: {
    (payload map ((payload01 , indexOfPayload01) -> {
        item: {
            Id: payload01.productid,
            Name: payload01.productname,
            (payload01.price map ((price , indexOfPrice) -> {
                price: price
            }))
        }
    }))
}
}
我已从传入数据中删除“abc”,因此格式如下:

[
{
"productid":"4",
"productname":"Shampoo",
"price":["1000","2000","3000"]
},
 {
"productid":"4",
"productname":"not shampoo",
"price":["1000","2000","3000"]
}
]

如果abc需要在那里,请告诉我,但我希望这对您有所帮助。

您可以使用以下方法:

{
items: {
    (payload map ((payload01 , indexOfPayload01) -> {
        item: {
            Id: payload01.productid,
            Name: payload01.productname,
            (payload01.price map ((price , indexOfPrice) -> {
                price: price
            }))
        }
    }))
}
}
我已从传入数据中删除“abc”,因此格式如下:

[
{
"productid":"4",
"productname":"Shampoo",
"price":["1000","2000","3000"]
},
 {
"productid":"4",
"productname":"not shampoo",
"price":["1000","2000","3000"]
}
]
如果abc需要,请告诉我,但我希望这能有所帮助