[英]Dataweave: single item into an array, if not null
我正在從API調用接收有效負載,並且需要將單個值轉換為具有單個元素的數組。
說這是我的有效載荷的兩個例子:
{
"name": "Bob",
"loanTerms": {
"term": 120,
"loanRate": 0.0213,
"maxApproved": 60000
}
}
和
{
"name": "Bob",
"loanTerms": null
}
我想做這樣的事情:
{
Name: payload.name
LoanOptions: [
{
ProductName: payload.loanTerms.term as :string,
DisplayName: null,
LoanTermMonth: payload.loanTerms.term,
Rate: payload.loanTerms.loanRate*100,
Amount: payload.loanTerms.maxApproved
} when payload.loanTerms?
]
}
但是編輯者一直對我bar之以鼻,說“此行有多個標記”(LoanOptions:行)
when
語句不完整。 一方面, otherwise
會缺少運算符。 另一方面, payload.loanTerms?
之后還有其他內容payload.loanTerms?
另外,在“ Name
字段后需要逗號。
另外,您可以刪除方括號:
{
Name: payload.name,
LoanOptions:
[{
ProductName: payload.loanTerms.term as :string,
DisplayName: null,
LoanTermMonth: payload.loanTerms.term,
Rate: payload.loanTerms.loanRate*100,
Amount: payload.loanTerms.maxApproved
}] when payload.loanTerms != null
otherwise []
}
這可能不是一個很好的解決方案,但可以為您完成工作。
%dw 1.0
%output application/json
---
{
Name: payload.name,
(LoanOptions:
[{
ProductName: "abc" as :string,
DisplayName: null,
LoanTermMonth: payload.loanTerms.term,
Rate: payload.loanTerms.loanRate*100,
Amount: payload.loanTerms.maxApproved
}]) when payload.loanTerms != null,
(LoanOptions: null) when payload.loanTerms == null
}
如果您不希望在輸入中不存在loanTerms時顯示任何內容,則可以刪除解決方案中提到的第二個Loanoptions(如下所示)。
%dw 1.0
%output application/json
---
{
Name: payload.name,
(LoanOptions:
[{
ProductName: "abc" as :string,
DisplayName: null,
LoanTermMonth: payload.loanTerms.term,
Rate: payload.loanTerms.loanRate*100,
Amount: payload.loanTerms.maxApproved
}]) when payload.loanTerms != null
}
您需要在when標記中添加條件,也需要添加其他條件。 看看下面的代碼片段
%dw 1.0
%output application/json { Name: payload.name, LoanOptions: { ProductName: payload.loanTerms.term as :string, DisplayName: null, LoanTermMonth: payload.loanTerms.term, Rate: payload.loanTerms.loanRate*100, Amount: payload.loanTerms.maxApproved } when (payload.loanTerms != null) and (payload.loanTerms != []) and (payload.loanTerms != "") otherwise null }
%output application/json { Name: payload.name, LoanOptions: { ProductName: payload.loanTerms.term as :string, DisplayName: null, LoanTermMonth: payload.loanTerms.term, Rate: payload.loanTerms.loanRate*100, Amount: payload.loanTerms.maxApproved } when (payload.loanTerms != null) and (payload.loanTerms != []) and (payload.loanTerms != "") otherwise null
}
%output application/json { Name: payload.name, LoanOptions: { ProductName: payload.loanTerms.term as :string, DisplayName: null, LoanTermMonth: payload.loanTerms.term, Rate: payload.loanTerms.loanRate*100, Amount: payload.loanTerms.maxApproved } when (payload.loanTerms != null) and (payload.loanTerms != []) and (payload.loanTerms != "") otherwise null }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.