我们使用Dataweave进行转换,处理对象列表。我们得到了类似的json响应:
{"hotels": [{
"name": "Hotel Oslo",
"propertyCode": "12345",
"currency": "NOK"
},
{
"name": "Hotel Stockholm",
"propertyCode": "12346",
"currency": "SEK"
}]}
但是,在只有1个响应的情况下,我们希望得到以下响应:
{"name": "Hotel Stockholm",
"propertyCode": "12346",
"currency": "SEK"}
我们正在生成这样的回复:
{
hotels: payload.rows map ((row , indexOfRow) -> {
name: row.content.companyName.content,
propertyCode: row.content.propertyCode.content,
currency: row.content.currencyCode.content
})}
我们应该把什么作为一个条件,以便在1个结果的情况下我们不会得到一个数组?
答案 0 :(得分:0)
试试这个:
%dw 1.0
%output application/json
%function makeHotel(row) {
name: row.name,
propertyCode: row.propertyCode,
currency: row.currency
}
---
{
hotels: payload.rows map ((row , indexOfRow) -> makeHotel(row))
} when ((sizeOf payload.rows) != 1)
otherwise makeHotel(payload.rows[0])
它将为空输入提供一个空数组,一个输入的简单对象和具有多个输入行的数组结构。
(出于测试目的,输入结构略有不同,但一般解决方案应该清楚。)