2016-05-14 10 views
0

Ich muss ein JSON konvertieren (bekam nach mehreren Aufrufen und dann zusammengeführt) in eine bestimmte Struktur.Json Konvertierung mit Mule Dataweave

hier ist meine Eingabe json Nutzlast

[{ 
    "shops": [{ 
     "shop": { 
      "code": "AU5", 
      "streetName": "a", 
      "city": "a", 
      "district": "a", 
      "state": "a", 
      "postalCode": "a", 
      "country": "a" 
     } 
    }, { 
     "shop": { 
      "code": "b", 
      "streetName": "b", 
      "city": "b", 
      "district": "b", 
      "state": "b", 
      "postalCode": "b", 
      "country": "b" 
     } 
    }] 
}, 


[ 
    [{ 
     "salesOffice": { 
      "shop": { 
       "code": "AU5" 
      }, 
      "office": "MEL", 
      "branch": "MEL", 
      "district": "SPR", 
      "subRegion": "SPR", 
      "region": "AP" 
     } 
    }], 
    [{ 
      "salesOffice": { 
       "shop": { 
        "code": "b" 
       }, 
       "office": "999", 
       "branch": "999", 
       "district": "999", 
       "subRegion": "999", 
       "region": "999" 
      } 
     } 

    ] 

]] 

unten ist die erwartete Ausgabe json

{ 
"shops": [ 
    { 
     "shop": { 
      "code": "AU5", 
      "streetName": "a", 
      "city": "a", 
      "district": "a", 
      "state": "a", 
      "postalCode": "a", 
      "country": "a", 
      "salesOffice": { 
       "office": "MEL", 
       "branch": "MEL", 
       "district": "SPR", 
       "subRegion": "SPR", 
       "region": "AP" 
      } 
     } 
    }, 
    { 
     "shop": { 
      "code": "b", 
      "streetName": "b", 
      "city": "b", 
      "district": "b", 
      "state": "b", 
      "postalCode": "b", 
      "country": "b", 
      "salesOffice": { 
       "office": "999", 
       "branch": "999", 
       "district": "999", 
       "subRegion": "999", 
       "region": "999" 
      } 
     } 
    } 
]} 

während Transformation, 'Code' innerhalb Geschäft sollte mit 'Code' innerhalb Vertriebsbüro >> shop> entsprechen > 'code'

unten ist Json Schema für die Ausgabe Nutzlast (sollte gegen den Ausgang validieren)

Jede Lösung, oder jeder Zeiger wäre eine große Hilfe

Antwort

2

Siehe unten dataweave:

%dw 1.0 
%output application/json 
--- 
{ 
shops: using (salesOffice = payload[1]..salesOffice)(payload[0].shops map { 
shop : 
    { 
    code: $.shop.code, 
    streetName:$.shop.streetName, 
    city:$.shop.city, 
    district:$.shop.district, 
    state:$.shop.state, 
    postalCode:$.shop.postalCode, 
    country:$.shop.country, 
    salesOffice: using (code= $.shop.code) (salesOffice[?(code == $.shop.code)] map { 
    office:$.office, 
    branch:$.branch, 
    district:$.district, 
    subRegion:$.subRegion, 
    region:$.region 
})[0] 
} 
}) 
} 
+0

Vielen Dank .. es funktioniert gut !! – Anand

0

Sie können Validate JSON Schema mule-Komponenten verwenden.