有效负载:
[
{
"noOfDocumentItemToSigner": [
"eSign_documentItemName1__c",
"eSign_documentItemName2__c"
],
"contentVersion": "068DQ000000lK0iYAE",
"documentName": "ESRA with Exhibit_A"
},
{
"noOfDocumentItemToSigner": [
"eSign_documentItemName1__c"
],
"contentVersion": "068DQ000000lK0OYAU",
"documentName": "ODP Agreement"
}
]
JSON:
{
"aAuDQ0000004mX60AI": [
{
"noOfDocumentItemToSigner": ["eSign_documentItemName1__c"],
"contentVersion": "068DQ000000lK0iYAE",
"documentName": "ESRA with Exhibit_A"
},
{
"noOfDocumentItemToSigner": ["eSign_documentItemName1__c"],
"contentVersion": "068DQ000000lK0OYAU",
"documentName": "ODP Agreement"
}
],
"aAuDQ0000004mXG0AY": [
{
"noOfDocumentItemToSigner": ["eSign_documentItemName1__c"],
"contentVersion": "068DQ000000lK0JYAU",
"documentName": "ESRA For bb bb"
},
{
"noOfDocumentItemToSigner": ["eSign_documentItemName1__c", "eSign_documentItemName2__c"],
"contentVersion": "068DQ000000lK0OYAU",
"documentName": "ODP Agreement"
}
]
}
我想过滤输入数组中的内容版本是否与有效负载中的内容版本匹配。
我可以执行以下操作,但该值是硬编码的。我想迭代 JSON 对象并获取 noOfDocumentItemToSigner。
(payload filter ((item, index) -> item.contentVersion == "068DQ000000lK0iYAE")).noOfDocumentItemToSigner map ((item, index) -> {})
您可以使用“后代”选择器获取所有可用内容版本的数组,如下所示
var allVersions = vars.inputJson..contentVersion
这是一种简单的方法,但我经历过上述方法对性能的影响。如果你的输入量很大,对性能影响很大,可以使用
valuesOf
的组合来获取所有版本的数组
var allVersions = flatten(valuesOf(vars.inputJson))
此后您可以从有效负载中过滤所需的版本
%dw 2.0
output application/json
var allVersions = flatten(valuesOf(vars.inputJson)).contentVersion
---
payload filter ((item, index) ->
allVersions contains item.contentVersion)
map ((item, index) -> {
// do the mapping here
})