簡體   English   中英

Dataweave:將單個項目放入數組,如果不為null

[英]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?
    ]
}

但是編輯者一直對我bar之以鼻,說“此行有多個標記”(LoanOptions:行)

when語句不完整。 一方面, otherwise會缺少運算符。 另一方面, payload.loanTerms?之后還有其他內容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時顯示任何內容,則可以刪除解決方案中提到的第二個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

%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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM