[英]Dataweave: single item into an array, if not null
I am receiving a payload from an API call, and I need to transform a single value into an array with a single element. 我正在从API调用接收有效负载,并且需要将单个值转换为具有单个元素的数组。
say these are two examples is my payload: 说这是我的有效载荷的两个例子:
{
"name": "Bob",
"loanTerms": {
"term": 120,
"loanRate": 0.0213,
"maxApproved": 60000
}
}
and 和
{
"name": "Bob",
"loanTerms": null
}
I want to do something like this: 我想做这样的事情:
{
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?
]
}
but the editor keeps barfing at me saying "multiple markers at this line" (the LoanOptions: line) 但是编辑者一直对我bar之以鼻,说“此行有多个标记”(LoanOptions:行)
The when
statement is incomplete. when
语句不完整。 On one hand, the otherwise
operator is missing. 一方面,
otherwise
会缺少运算符。 On the other, is anything else after payload.loanTerms?
另一方面,
payload.loanTerms?
之后还有其他内容payload.loanTerms?
Also, a comma is needed after the Name
field. 另外,在“
Name
字段后需要逗号。
Plus, you can remove the square brackes: 另外,您可以删除方括号:
{
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 []
}
This may not be a graceful solution but does the job for you. 这可能不是一个很好的解决方案,但可以为您完成工作。
%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
}
You may remove the 2nd Loanoptions ( as shown below) mentioned in solution if you dont want to display anything when loanTerms is not present in input. 如果您不希望在输入中不存在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
}
You need to add conditions in when tag as well as add otherwise condition as well. 您需要在when标记中添加条件,也需要添加其他条件。 Take a look at below code snippet
看看下面的代码片段
%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.