Mule Dataweave:将单个项放入数组(如果不为null)
我正在从一个API调用接收一个有效负载,我需要将一个值转换成一个包含单个元素的数组 假设以下两个示例是我的有效负载:Mule Dataweave:将单个项放入数组(如果不为null),mule,dataweave,Mule,Dataweave,我正在从一个API调用接收一个有效负载,我需要将一个值转换成一个包含单个元素的数组 假设以下两个示例是我的有效负载: { "name": "Bob", "loanTerms": { "term": 120, "loanRate": 0.0213, "maxApproved": 60000 } } 及 我想这样做: { Name: payload.name LoanOptions: [ { Product
{
"name": "Bob",
"loanTerms": {
"term": 120,
"loanRate": 0.0213,
"maxApproved": 60000
}
}
及
我想这样做:
{
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?
]
}
但是编辑总是对我说“这行有多个标记”(LoanOptions:line)当
语句不完整时。一方面,缺少否则
运算符。另一方面,
此外,在名称
字段后面需要逗号
此外,还可以删除方括号:
{
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 []
}
when
语句不完整。一方面,缺少否则
运算符。另一方面,
此外,在名称
字段后面需要逗号
此外,还可以删除方括号:
{
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
}
这可能不是一个优雅的解决方案,但却能为您完成这项工作
%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
%输出应用程序/json
{
Name:payload.Name,
贷款:
{
ProductName:payload.loanTerms.term为:字符串,
DisplayName:null,
LoantCommons:payload.loanTerms.term,
费率:有效载荷。贷款利率*100,
金额:payload.loantrems.maxApproved
}当(payload.loainterms!=null)和(payload.loainterms!=[])以及(payload.loainterms!==“”)时
否则无效
}
您需要在when标记中添加条件,也需要添加否则的条件。请查看下面的代码片段
%dw 1.0
%输出应用程序/json
{
Name:payload.Name,
贷款:
{
ProductName:payload.loanTerms.term为:字符串,
DisplayName:null,
LoantCommons:payload.loanTerms.term,
费率:有效载荷。贷款利率*100,
金额:payload.loantrems.maxApproved
}当(payload.loainterms!=null)和(payload.loainterms!=[])以及(payload.loainterms!==“”)时
否则无效
}
这将把loanOptions设置为单个元素,其中我想要一个数组,如果没有,loanOptions将是[](空数组)。这将把loanOptions设置为单个元素,其中我想要一个数组,如果没有,loanOptions将是[](空数组)