2017-03-17 55 views
1

在Mule/Dataweave中,如何將HashMap轉換/轉換爲數組。我有一個HashMap,其關鍵字&是動態數字。Mule/Dataweave在Mule/Dataweave中,如何將HashMap轉換爲數組

實施例:

{"3.2" : 1, "22" : 8, "2.0" : 1} 

我想將它轉換到這樣的結構:

[ 
    { 
    "name": "app-a", 
    "value1": 3.2, 
    "value2": 1 
    }, 
    { 
    "name": "app-a", 
    "value1": 22, 
    "value2": 8 
    }, 
    { 
    "name": "app-a", 
    "value1": 2, 
    "value2": 1 
    } 
] 

溶液(由於@Sulthony 1H)

%dw 1.0 
%output application/json 
--- 
payload pluck $$ map { 
value1: ($ as :string) as :number, 
value2: payload[$] 
} 

回答

2

爲了改造一個HashMap進入陣列,我將執行以下步驟:

  1. 迭代使用勇氣運營商通過其關鍵 HashMap中的DataWeave:payload pluck $$ map {}
  2. 改造關鍵value1: ($ as :string) as :number
  3. 獲取基於該值:value2: payload[$]
+0

太棒了。完美解決方案我也用實際的編織代碼進行了更新。 – gnanagurus

0

另一種不同的解決方案:

%dw 1.0 
%output application/json 
--- 
payload map { 
    ($ mapObject { 
     name: "app-a", 
     value1: $$ as :string, 
     value2: $ 
    }) 
} 

1 - 使用map操作符遍歷元素列表。有效載荷圖

2 - 在數組$ mapObject的每個元素上使用mapObject。隨着MapObject的,$$指的是鍵名,$指的是價值

3 - 打印出與值1的值:$$爲:字符串,值2:$

更簡單...

payload pluck (
    { 
     value1:$$, 
     value2:$ 
    } 
)