2017-10-08 47 views
0

我正在将json转换为xml,并且我正在为该数组获取更多数组中的内部数组,我无法为内部数组设置空值检查,在dataweave中获取脚本错误,我附有示例Json请求和XML响应。在数据编辑中为数组添加空值检查

{"test":[ { 
        "GroupId": "3", 
        "forms": [{ 
          "formId": "2" 
        } ] 
    }, 
{ "GroupId": "3" 
      ] 
    } ]} 

这个示例XML我生成

<test> 
<myforms> 
<GroupId>3</GroupId> 
<formId>2</formId> 
</myforms> 
<myforms> 
<GroupId>7</GroupId> 
<formId>8</formId> 
</myforms> 
</test> 

和我的DW脚本如下

%dw 1.0 
%output application/xml 
--- 
{ 
    (test: { 
     (payload.test map { 
      myforms: { 
       GroupId: $.GroupId as :number, 

       (($.forms map { 

        formId:$.formId 

       })) when payload.test.forms !=null 



      } 
     }) 
    }) when payload.test !=null 
} 

问题是: - 我对内部阵列不能放空检查即当payload.test.forms!= null 它抛出一个脚本错误,下面的快照与dataweave的错误标记,请告诉如何set null检查我nner阵列循环

enter image description here

回答

1

那是因为你的语法的你得到这样的错误。
你可以尝试default [],是这样的:

($.forms default [] map { 

        formId:$.formId 

       }) 

这将有助于让你的预期的结果

+0

我已经实现了你的soloution但富尔德一个更多的问题,你可以检查下面的网址更多的细节 https://forums.mulesoft.com/questions/78062/set-null-condition-for-json-aray-in-dataweave.html?childToView=79252#comment- 7 9252 Thnaks – Isranis

0

试试下面的代码: -

%dw 1.0 
%output application/xml 
--- 
{ 
    test : { 
     (payload.test map { 
      myforms : { 
       GroupId: $.GroupId as :number, 
       ($.forms default [] map { 

        formId : $.formId 

       }) 
      } 
     }) 
    } 
} 
+0

我已经实现了你的solvo,但是还有一个问题可以查看下面的URL以获得更多详细信息 https://forums.mulesoft.com/questions/78062/set-null-condition-for-json-aray -in-dataweave.html?childToView = 79252#评论 - 79252 Thnaks – Isranis

+0

我不知道你是如何映射的形式排列,但你可以在下面DW试试.. 或共享DW你正在使用它你它会使它更容易理解你如何映射它.. %dw 1.0 %output application/xml --- { 测试:{ (payload.test地图{ myforms:{ 的GroupId:$ .GroupId为:数, ($者,恕不默认[]地图{ formId:$ .formId, (RoatationId:$ .RoatationId )何时$ .RoatationId?和$ .RoatationId!= null }) } }) } } – Himanshu

+0

感谢您的回复,让我检查 – Isranis