MuleSoft 通过来自另一个 json 数组列表的键过滤一个 json 数组
MuleSoft filter a json array by keys from another json array's list
在 MuleSoft/DataWeave 中,我有一个 json 数组,我需要按另一个 json 列表中的键值进行过滤。
这是我需要过滤的 json:
[
{
"order_by": "CDDASD",
"product_no": "69843270432",
"serial_number": "CD909837296",
"place_of_origin": "SFG",
"depot": "LK955",
"quantity": "150"
},
{
"order_by": "CDDPOI",
"product_no": "74890327033",
"serial_number": "CD909837297",
"place_of_origin": "SVH",
"depot": "MN822",
"quantity": "900"
},
{
"order_by": "CDDUYT",
"product_no": "43720943334",
"serial_number": "CD909837298",
"place_of_origin": "SRF",
"depot": "BV675",
"quantity": "1200"
}
]
当我拨打 API 电话时,我会发送以下内容 json
{
"FORMAT": [
"order_by",
"product_no",
"serial_number"
]
}
我想要对 return 的响应只有前 json 中与 FORMAT
中指定的任何键匹配的 key/value 对。因此,对于上面的内容,我希望得到这样的响应:
[
{
"order_by": "CDDASD",
"product_no": "69843270432",
"serial_number": "CD909837296"
},
{
"order_by": "CDDPOI",
"product_no": "74890327033",
"serial_number": "CD909837297"
},
{
"order_by": "CDDUYT",
"product_no": "43720943334",
"serial_number": "CD909837298"
}
]
我在遍历 FORMAT
中的值然后用这些值过滤第一个 json 时遇到问题。
我什至不确定应该使用 DataWeave 中的哪些功能。我应该在 FORMAT
上使用地图,然后在第一个 json 上使用过滤器吗?当需要一个对象时,我不断收到关于使用数组的错误,所以我不知所措。
抱歉缺少代码,我太困惑了,不知道我应该做什么。感谢所有帮助。
假设您的有效载荷始终是您提供的(不是嵌套结构),那么您可以使用 Map function to iterate over your payload and then filterObject 来实现您想要的输出
%dw 2.0
output application/json
var fields = {
"FORMAT": [
"order_by",
"product_no",
"serial_number"
]
}
---
payload map ((item) ->
item filterObject ((value, key) ->
fields.FORMAT contains (key as String) ))
在 MuleSoft/DataWeave 中,我有一个 json 数组,我需要按另一个 json 列表中的键值进行过滤。 这是我需要过滤的 json:
[
{
"order_by": "CDDASD",
"product_no": "69843270432",
"serial_number": "CD909837296",
"place_of_origin": "SFG",
"depot": "LK955",
"quantity": "150"
},
{
"order_by": "CDDPOI",
"product_no": "74890327033",
"serial_number": "CD909837297",
"place_of_origin": "SVH",
"depot": "MN822",
"quantity": "900"
},
{
"order_by": "CDDUYT",
"product_no": "43720943334",
"serial_number": "CD909837298",
"place_of_origin": "SRF",
"depot": "BV675",
"quantity": "1200"
}
]
当我拨打 API 电话时,我会发送以下内容 json
{
"FORMAT": [
"order_by",
"product_no",
"serial_number"
]
}
我想要对 return 的响应只有前 json 中与 FORMAT
中指定的任何键匹配的 key/value 对。因此,对于上面的内容,我希望得到这样的响应:
[
{
"order_by": "CDDASD",
"product_no": "69843270432",
"serial_number": "CD909837296"
},
{
"order_by": "CDDPOI",
"product_no": "74890327033",
"serial_number": "CD909837297"
},
{
"order_by": "CDDUYT",
"product_no": "43720943334",
"serial_number": "CD909837298"
}
]
我在遍历 FORMAT
中的值然后用这些值过滤第一个 json 时遇到问题。
我什至不确定应该使用 DataWeave 中的哪些功能。我应该在 FORMAT
上使用地图,然后在第一个 json 上使用过滤器吗?当需要一个对象时,我不断收到关于使用数组的错误,所以我不知所措。
抱歉缺少代码,我太困惑了,不知道我应该做什么。感谢所有帮助。
假设您的有效载荷始终是您提供的(不是嵌套结构),那么您可以使用 Map function to iterate over your payload and then filterObject 来实现您想要的输出
%dw 2.0
output application/json
var fields = {
"FORMAT": [
"order_by",
"product_no",
"serial_number"
]
}
---
payload map ((item) ->
item filterObject ((value, key) ->
fields.FORMAT contains (key as String) ))