使用m子4中的选项进行状态检查

问题描述

正在尝试检查json数据下方的更改字段中是否存在Name字段。

输入:

{
    "data": {
        "schema": "1vThoUjGykaw_VgT4Qu2eg","payload": {
            "Job_Prev_Name__c": "C##-#7-00052 | Mule UT","LastModifiedDate": "2020-09-03T06:52:08Z","ChangeEventHeader": {
                "commitNumber": 10720388062229,"commitUser": "00570000001c9fmAAA","sequenceNumber": 1,"entityName": "ATI_Job__c","changeType": "UPDATE","changedFields": [
                    "Name","LastModifiedDate","Job_Name__c","Job_Prev_Name__c"
                ],"changeOrigin": "com/salesforce/api/soap/49.0;client=SfdcInternalAPI/","transactionKey": "00042924-3d1d-fae6-7d7a-1a3fbda54122","commitTimestamp": 1599115928000,"recordIds": [
                    "a77V00000000vI4IAI"
                ]
            },"Job_Name__c": "Mule UV","Name": "C##-#7-00052 | Mule UV"
        },"event": {
            "replayId": 1020702
        }
    },"channel": "/data/ATI_Job__ChangeEvent"
}

现在使用的条件是

payload.data.payload.changedFields.Name?

但是每次都失败。如何在选择连接器中检查此条件?

解决方法

您输入的json似乎不是有效的json。我对其进行了一些修改,以帮助您解决问题。

{
    "schema": "1vThoUjGykaw_VgT4Qu2eg","payload": {
      "Job_Prev_Name__c": "C##-#7-00052 | Mule UT","LastModifiedDate": "2020-09-03T06:52:08Z","ChangeEventHeader": {
        "commitNumber": 10720388062229,"commitUser": "00570000001c9fmAAA","sequenceNumber": 1,"entityName": "ATI_Job__c","changeType": "UPDATE","changedFields": [
          "Name","LastModifiedDate","Job_Name__c","Job_Prev_Name__c"
        ],"changeOrigin": "com/salesforce/api/soap/49.0;client=SfdcInternalAPI/","transactionKey": "00042924-3d1d-fae6-7d7a-1a3fbda54122","commitTimestamp": 1599115928000,"recordIds": [
          "a77V00000000vI4IAI"
        ]
      }
    }
}

要验证changedFields数组是否包含值“ Name”,可以使用 contains 运算符。同样,由于有效载荷是一个关键字,并且您的输入内容包含在其中,因此您需要将其包装在“”中。

%dw 2.0
output application/json
---
payload."payload".ChangeEventHeader.changedFields contains "Name"