2017-03-17 2 views
1

Dans Mule/Dataweave, comment convertir/transformer un HashMap en un tableau. J'ai un HashMap dont la valeur clé & sont des nombres dynamiques.Dans Mule/Dataweave, comment transformer une HashMap en un tableau lorsque la clé et la valeur sont des nombres

Exemple:

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

Je veux transformer cette structure:

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

Solution (Merci à @Sulthony H)

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

Répondre

2

Afin de transformer un HashMap dans un tableau, je vais faire les étapes suivantes:

  1. Itérer HashMap par sa clé à l'aide plumer opérateur DataWeave: payload pluck $$ map {}
  2. Transform la clé comme Numéro: value1: ($ as :string) as :number
  3. Obtenez la valeur en fonction de cette clé: value2: payload[$]
+0

Impressionnant. Solution parfaite J'ai également mis à jour par question avec le code de tissage réel. – gnanagurus

0

Une autre solution différente:

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

1 - Utilisez l'opérateur de carte pour parcourir la liste des éléments. carte de charge utile

2 - Utilisez mapObject sur chacun des éléments de votre tableau $ mapObject. Avec MapObject, $$ fait référence au nom de la clé, $ fait référence à la valeur

3 - imprimer les valeurs avec valeur1: $$ comme: string, valeur2:

$ Encore plus simple, ...

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