json в xml с использованием функции суммы dataweave

Мой входной json, как показано ниже: -

{
  "Studentvalue": [
    {
      "StudentDetails": {
        "valueId": "default",
        "reason": "default",
        "type": "high",
        "Schoolbudget": [
          {
            "Id": "100",
            "Age": "23"
          },
          {
            "Id": "101",
            "Age": "24"
          },
          {
            "Id": "102",
            "Age": "25"
          }
        ],
        "isApplicable": "boolean",
        "isNotified": "boolean"
      }
    }
  ]
}

Выходной xml:

<schoolmemo>
<active>yes<active>
<schooltype>Primary<schooltype>
<validity>?<validity>
</schoolmemo>

У меня есть одно условие, если сумма поля «ВОЗРАСТ» в json больше 100, чем значение тега достоверности в xml - «да» иначе «нет»

Можете ли вы помочь мне, как использовать функцию суммы в dataweave для поля действительности, и важный момент - я получаю массив поля «age» в json.

Ура, Bsolver


person Isranis    schedule 07.05.2017    source источник


Ответы (2)


вот искомый dataweave:

%dw 1.0
%output application/xml
%var agesCombined = sum payload.StudentDetails.StudentType.Age
---
schoolmemo: {
    active: "yes",
    schooltype: "Primary",
    validity: "yes" when agesCombined < 100 otherwise "no"
}
person Yevgeniy    schedule 07.05.2017
comment
здесь ..% var agecombined не будет работать, так как я получаю значения возраста, массив, который я хочу объединить здесь: -23 + 24 + 25 Пожалуйста, скажите мне, как суммировать все возрасты, которые поступают в массив, чем применять состояние - person Isranis; 08.05.2017
comment
Ответ Евгения правильный, попробуйте. payload.StudentDetails.StudentType.Age возвращает массив. Вы можете записать его как payload.StudentDetails. * StudentType.Age, что делает его более понятным, но результат тот же. - person Roger Butenuth; 08.05.2017
comment
нет, он не работает, он выдает ошибку null для массива, я обновил свой json с точными полями, не могли бы вы помочь мне сейчас ... извините за еще одно обновление: - (.... Мне нужно суммировать возраст 23 + 24 + 25 и делаем валидацию. - person Isranis; 08.05.2017

Попробуйте этот скрипт dataweave

%dw 1.0
%output application/xml
%var sumOfAge = sum payload.Studentvalue.StudentDetails.Schoolbudget..Age
---
schoolmemo: {
    active: "yes",
    schooltype: "Primary",
    validity: "yes" when sumOfAge < 100 otherwise "no"
}

payload.Studentvalue.StudentDetails.Schoolbudget..Age получит массив возрастов.

person Abhay    schedule 19.05.2017