使用Mule 4中所需的任一字段验证json数组

使用Mule 4中所需的任一字段验证json数组,mule,dataweave,mule4,Mule,Dataweave,Mule4,请求Json如下所示:- { "eNumber": 8506493, "details": [ { "id":12345, "name": xyz123 } ] } 作为需求的一部分,我需要检查“id”或“name”字段必须显示的“details”数组。如果存在“id”字段,“名称”是非强制性的。如果存在“名称”字段,“id”是非强制性的。如果未满足,则抛出错误 我尝试了几个选项,使用filter the details数组并

请求Json如下所示:-

{ 
   "eNumber": 8506493,   
   "details": [
     {
      "id":12345,
      "name": xyz123
     }
  ]
}
作为需求的一部分,我需要检查“id”或“name”字段必须显示的“details”数组。如果存在“id”字段,“名称”是非强制性的。如果存在“名称”字段,“id”是非强制性的。如果未满足,则抛出错误


我尝试了几个选项,使用filter the details数组并在validation组件中检查筛选数组的大小。它似乎不太管用。如果有人有更好的解决方案,请在此处共享。

如果通过您的条件,此示例代码将返回true或false

%dw 2.0
import * from dw::core::Arrays
output application/json
---
payload.details every ((item) -> item.id? or item.name?)
我使用的函数是检查数组中的所有元素是否通过给定的条件


稍后,您可以使用选项和,也可以将dw函数与if-else一起使用。

您可以将其限制在RAML级别。 样本RAML-

#%RAML 1.0
标题:api
类型:
测试1:
类型:对象
特性:
身份证件:
类型:字符串
示例:123a
测试2:
类型:对象
特性:
姓名:
类型:字符串
示例:xyz124
测试3:
类型:对象
特性:
枚举器:
类型:字符串
示例:8506493a
细节:
类型:[test1 | test2]
/测试:
职位:
正文:
应用程序/json:

类型:test3
我确实注意到了这一点。我希望这些验证在应用程序的中间完成。