Mule Dataweave:将单个项放入数组(如果不为null)

Mule Dataweave:将单个项放入数组(如果不为null),mule,dataweave,Mule,Dataweave,我正在从一个API调用接收一个有效负载,我需要将一个值转换成一个包含单个元素的数组 假设以下两个示例是我的有效负载: { "name": "Bob", "loanTerms": { "term": 120, "loanRate": 0.0213, "maxApproved": 60000 } } 及 我想这样做: { Name: payload.name LoanOptions: [ { Product

我正在从一个API调用接收一个有效负载,我需要将一个值转换成一个包含单个元素的数组

假设以下两个示例是我的有效负载:

{
  "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将是[](空数组)