Mule Transform устанавливает динамический ключ из полезной нагрузки

Я хочу настроить словарь ключевых значений из двух разных полей в своей полезной нагрузке. Моя первая мысль - использовать компонент преобразования и динамически установить ключ, но этот код не работает:

%dw 1.0
%output application/java
---
{
    payload.objectnumber: payload.objectid
}

Я получаю такую ​​ошибку:

Multiple markers at this line
- Invalid input "payload.", expected conditionalKeyValuePair,
   keyValuePair, enclosedExpr or objectEnd
- no viable alternative at input 'payload'
- no viable alternative at input '.'

Есть идеи, как заставить его работать?

Вход:

[{
  objectnumber: 75,
  objectid: "abcdefgh"
}]

Ожидаемый результат:

[{
  "abcdefgh": 75
}]

person CamJohnson26    schedule 20.06.2016    source источник
comment
Опубликуйте свои входные данные и ожидаемый результат?   -  person star    schedule 21.06.2016
comment
Да, я добавлю это к вопросу, но это довольно просто   -  person CamJohnson26    schedule 21.06.2016


Ответы (2)


Поместите переменную в скобки (значение), чтобы определить динамический ключ. Поэтому вы можете попробовать этот код:

%dw 1.0
%output application/json
---
payload map {
    ($.objectid): $.objectnumber
}
person sulthony h    schedule 21.06.2016

Попробуйте приведенный ниже код

    <dw:transform-message metadata:id="b968b3ec-ed0a-492d-bf32-bcfe0d20e9d0" doc:name="Transform Message">
        <dw:set-payload><![CDATA[%dw 1.0
       %output application/java
       %var objectId = payload.objectid
       ---
        objectId :payload.objectnumber
        ]]></dw:set-payload>
    </dw:transform-message>

Ввод JSON в Postman:

 [  
   {  
  "objectnumber":75,
  "objectid":"abcdefgh"
   }
 ]
person star    schedule 20.06.2016