Mule 使用dataweave sum函数将json转换为xml

Mule 使用dataweave sum函数将json转换为xml,mule,dataweave,Mule,Dataweave,我的输入如下:- { "Studentvalue": [ { "StudentDetails": { "valueId": "default", "reason": "default", "type": "high", "Schoolbudget": [ { "Id": "100", "Age": "23" },

我的输入如下:-

{
  "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中“AGE”字段的总和大于100,则xml中的validity标记的值为“yes”,否则为“no”

你们能帮助我如何在dataweave中使用sum函数来表示有效性字段吗?重要的一点是,我得到的是json中“age”字段的数组

干杯,
b解决方案

以下是您正在寻找的数据编织:

%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"
}
%dw 1.0
%输出应用程序/xml
%var agesCombined=sum payload.StudentDetails.StudentType.Age
---
学校备忘录:{
活动:“是”,
学校类型:“小学”,
有效期:年龄小于100岁时为“是”,否则为“否”
}

以下是您正在寻找的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"
}
%dw 1.0
%输出应用程序/xml
%var agesCombined=sum payload.StudentDetails.StudentType.Age
---
学校备忘录:{
活动:“是”,
学校类型:“小学”,
有效期:年龄小于100岁时为“是”,否则为“否”
}

尝试此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"
}
%dw 1.0
%输出应用程序/xml
%var sumOfAge=总有效载荷.Studentvalue.StudentDetails.Schoolbudget..Age
---
学校备忘录:{
活动:“是”,
学校类型:“小学”,
有效期:当总和小于100时为“是”,否则为“否”
}

payload.Studentvalue.StudentDetails.Schoolbudget..Age
将获取ages数组。

尝试此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"
}
%dw 1.0
%输出应用程序/xml
%var sumOfAge=总有效载荷.Studentvalue.StudentDetails.Schoolbudget..Age
---
学校备忘录:{
活动:“是”,
学校类型:“小学”,
有效期:当总和小于100时为“是”,否则为“否”
}

payload.Studentvalue.StudentDetails.Schoolbudget..Age将获取ages数组。

此处..%var agescombined将不起作用,因为我正在获取年龄值一个数组,我想在此组合所有年龄:-23+24+25请告诉我如何将数组中的所有年龄相加,而不是应用条件YevGeny的答案是正确的,请尝试一下。payload.StudentDetails.StudentType.Age将生成一个数组。您可以将其写为payload.StudentDetails.*StudentType.Age,这使它更清晰,但结果是相同的。不,它不起作用。它给出了一个错误“null to array”,我已经用准确的字段更新了我的json,您现在能帮我吗…很抱歉,还有一个更新:-(…我必须对年龄的23+24+25进行求和并进行验证。此处…%var agescombined将不起作用,因为我正在获取年龄值一个数组,我想在此处组合所有年龄:-23+24+25请告诉我如何对数组中的所有年龄求和,而不是应用条件YevGeny的答案是正确的,请尝试一下。有效载荷。StudentDetails.StudentType.Age生成一个数组。您可以将其作为有效负载写入。StudentDetails.*StudentType.Age,这使它更清晰,但结果是相同的。不,它不起作用。它给出了一个错误“null to array”,我已经用准确的字段更新了我的json。您现在可以帮助我吗?抱歉,有一个更新:-(……我必须对年龄23+24+25进行求和,并进行验证。