首页 > 解决方案 > 通过某些值过滤有效负载并删除其他整个有效负载

问题描述

我有以下要求,这是我只需要允许 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
    }
  ]
}

标签: muledataweave

解决方案


如果该输入 JSON 是一个数组,您可以使用它filter来过滤记录。就像是:

%dw 2.0
output application/json
---
payload filter ($.statusEvent.'type'=="PROOF_APPROVED") map{
      "quoteLineId": $.statusEvent.quoteLineId,
      "package": $.statusEvent.packageConfiguration
}

推荐阅读