Mule 使用dataweave从两个json数组列表生成所有可能的组合

Mule 使用dataweave从两个json数组列表生成所有可能的组合,mule,dataweave,mule-esb,Mule,Dataweave,Mule Esb,我正在研究mule 3.9。在工作中,我遇到了一个场景,我想从传入的JSON数组列表生成所有可能的值组合。json数组列表下的值是动态的 我想以xml格式生成输出。我只想使用dataweave实现这一点。请帮助我如何使用datawevae在mule 3.9中实现这一点 下面是我的JSON输入和所需的xml输出 注意:Json数组列表是动态的 JSON输入 "building":[ { "code":"BuildingExcess", "v

我正在研究mule 3.9。在工作中,我遇到了一个场景,我想从传入的JSON数组列表生成所有可能的值组合。json数组列表下的值是动态的

我想以xml格式生成输出。我只想使用dataweave实现这一点。请帮助我如何使用datawevae在mule 3.9中实现这一点

下面是我的JSON输入和所需的xml输出

注意:Json数组列表是动态的

JSON输入

 "building":[  
      {  
         "code":"BuildingExcess",
         "value":"600"
      },
      {  
         "code":"BuildingExcess",
         "value":"700"
      }
   ],
"content":[  
      {  
         "code":"ContentExcess",
         "value":"600"
      },
      {  
         "code":"ContentExcess",
         "value":"400"
      }
]
输出

  <resultset>
    <list>
        <Building>
            <code>BuildingExcess</code>
            <value>600</value>
        </Building>
        <Content>
            <code>ContentExcess</code>
            <value>600</value>
        </Content>
    </list>
    <list>
        <Building>
            <code>BuildingExcess</code>
            <value>700</value>
        </Building>
        <Content>
            <code>ContentExcess</code>
            <value>600</value>
        </Content>
    </list>
    <list>
        <Building>
            <code>BuildingExcess</code>
            <value>600</value>
        </Building>
        <Content>
            <code>ContentExcess</code>
            <value>400</value>
        </Content>
    </list>
    <list>
        <Building>
            <code>BuildingExcess</code>
            <value>700</value>
        </Building>
        <Content>
            <code>ContentExcess</code>
            <value>400</value>
        </Content>
    </list> 
</resultset>

假设您的两个列表始终是
构建
内容
,并且它们是有效负载的元素(或某些变量),您可以使用以下dataweave代码来实现所需的输出:

%dw 1.0
%output application/xml
%var input = {
    "building":[  
          {  
             "code":"BuildingExcess",
             "value":"600"
          },
          {  
             "code":"BuildingExcess",
             "value":"700"
          }
       ],
    "content":[  
          {  
             "code":"ContentExcess",
             "value":"600"
          },
          {  
             "code":"ContentExcess",
             "value":"400"
          }
    ]   
}
---
resultset: {( 
    flatten (input.content map ((cont) -> input.building map 
        list: {
            Building: $,
            Content: cont
        })
    )
)}
输出:

<?xml version='1.0' encoding='windows-1252'?>
<resultset>
  <list>
    <Building>
      <code>BuildingExcess</code>
      <value>600</value>
    </Building>
    <Content>
      <code>ContentExcess</code>
      <value>600</value>
    </Content>
  </list>
  <list>
    <Building>
      <code>BuildingExcess</code>
      <value>700</value>
    </Building>
    <Content>
      <code>ContentExcess</code>
      <value>600</value>
    </Content>
  </list>
  <list>
    <Building>
      <code>BuildingExcess</code>
      <value>600</value>
    </Building>
    <Content>
      <code>ContentExcess</code>
      <value>400</value>
    </Content>
  </list>
  <list>
    <Building>
      <code>BuildingExcess</code>
      <value>700</value>
    </Building>
    <Content>
      <code>ContentExcess</code>
      <value>400</value>
    </Content>
  </list>
</resultset>

假设您的两个列表始终是
构建
内容
,并且它们是有效负载的元素(或某些变量),您可以使用以下dataweave代码来实现所需的输出:

%dw 1.0
%output application/xml
%var input = {
    "building":[  
          {  
             "code":"BuildingExcess",
             "value":"600"
          },
          {  
             "code":"BuildingExcess",
             "value":"700"
          }
       ],
    "content":[  
          {  
             "code":"ContentExcess",
             "value":"600"
          },
          {  
             "code":"ContentExcess",
             "value":"400"
          }
    ]   
}
---
resultset: {( 
    flatten (input.content map ((cont) -> input.building map 
        list: {
            Building: $,
            Content: cont
        })
    )
)}
输出:

<?xml version='1.0' encoding='windows-1252'?>
<resultset>
  <list>
    <Building>
      <code>BuildingExcess</code>
      <value>600</value>
    </Building>
    <Content>
      <code>ContentExcess</code>
      <value>600</value>
    </Content>
  </list>
  <list>
    <Building>
      <code>BuildingExcess</code>
      <value>700</value>
    </Building>
    <Content>
      <code>ContentExcess</code>
      <value>600</value>
    </Content>
  </list>
  <list>
    <Building>
      <code>BuildingExcess</code>
      <value>600</value>
    </Building>
    <Content>
      <code>ContentExcess</code>
      <value>400</value>
    </Content>
  </list>
  <list>
    <Building>
      <code>BuildingExcess</code>
      <value>700</value>
    </Building>
    <Content>
      <code>ContentExcess</code>
      <value>400</value>
    </Content>
  </list>
</resultset>