mule - 通过某些值过滤有效负载并删除其他整个有效负载
问题描述
我有以下要求,这是我只需要允许 statusEvent.type:"Proof_approved" >
{
"statusEvent": {
"type": "PROOF_APPROVED",
"status": "WAITING_FOR_INPUT",
"eventDate": "2010-11-11T07:00:00Z",
"modifyDate": "2010-11-11T07:00:00Z",
"userName": "educator@school.edu (educator%40school.edu)",
"userOrgId": "1321231",
"quoteLineId":"testid1"
"packageConfiguration": [
{
"packageId": [
"AIM_PACKAGE1"
],
"component": [
"Handbook"
],
"fieldName": [
"Upload Handbook Document"
],
"assetUrl": [
"sflydamlocation.handbookfilename1.pdf"
]
}
]
}
}
输出如下:
(下面应该只有类型为“type”的有效载荷:“PROOF_APPROVED”,)
{
"name": payload.statusevent.userName,
"orderItems": [
{
"quoteLineId": payload.statusevent.quoteLineId,
"package": payload.statusevent.packageconfiguration
}
]
}
解决方案
如果该输入 JSON 是一个数组,您可以使用它filter
来过滤记录。就像是:
%dw 2.0
output application/json
---
payload filter ($.statusEvent.'type'=="PROOF_APPROVED") map{
"quoteLineId": $.statusEvent.quoteLineId,
"package": $.statusEvent.packageConfiguration
}
推荐阅读
- php - 在php中使用scandir时如何排除某个文件夹
- java - 如何通过异常处理限制用户输入字符或负输入?
- spring-boot - Mapping with and without /
- mysql - 在 mysql 中检查格式正确和/或有效的几何图形
- c# - 如何破译模棱两可的 Unity C# 堆栈跟踪
- c - ZBar - 尝试读取 PDF417 代码
- vb.net - VB.NET - 将字符串转换为日期时无法强制执行两位数的日期和月份
- arduino - How would I find out what day it is on an arduino without any external stuff?
- javascript - 创建新用户后 Firebase 身份验证状态更改
- java - IOUtils.copyLarge 不适用于压缩输入