I am receiving a payload from an API call, and I need to transform a single value into an array with a single element.
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)
The when
statement is incomplete. On one hand, the otherwise
operator is missing. On the other, is anything else after payload.loanTerms?
Also, a comma is needed after the Name
field.
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.
%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. 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 }
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.