Dataweave:单项放入数组,如果不为空
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?
]
}
但编辑一直对我吐槽说 "multiple markers at this line"(LoanOptions: 行)
when
语句不完整。一方面,缺少 otherwise
运算符。另一方面,在 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 时显示任何内容,您可以删除解决方案中提到的第二个 Loanooptions(如下所示)。
%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 标记中添加条件以及添加 otherwise 条件。看看下面的代码片段
%dw 1.0</p>
<h2>%输出application/json</h2>
<p>{
姓名:payload.name,
贷款选项:
{
产品名称:payload.loanTerms.term 为:字符串,
显示名称:空,
LoanTermMonth:payload.loanTerms.term,
率:payload.loanTerms.loanRate*100,
金额:payload.loanTerms.maxApproved
} when (payload.loanTerms != null) and (payload.loanTerms != []) and (payload.loanTerms != "")
否则为空</p>
<pre><code> }
我正在接收来自 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?
]
}
但编辑一直对我吐槽说 "multiple markers at this line"(LoanOptions: 行)
when
语句不完整。一方面,缺少 otherwise
运算符。另一方面,在 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 时显示任何内容,您可以删除解决方案中提到的第二个 Loanooptions(如下所示)。
%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 标记中添加条件以及添加 otherwise 条件。看看下面的代码片段
%dw 1.0</p>
<h2>%输出application/json</h2>
<p>{
姓名:payload.name,
贷款选项:
{
产品名称:payload.loanTerms.term 为:字符串,
显示名称:空,
LoanTermMonth:payload.loanTerms.term,
率:payload.loanTerms.loanRate*100,
金额:payload.loanTerms.maxApproved
} when (payload.loanTerms != null) and (payload.loanTerms != []) and (payload.loanTerms != "")
否则为空</p>
<pre><code> }