Mule ESB:遍历 json 负载并为 Salesforce 创建 where 子句条件

Mule ESB : Traverse a json payload and make where clause condition for Salesforce

以下是 json 有效负载方面的输入,需要的是形成一个 where 子句语句,我可以将其用于 salesforce 查询。

注意:查询字段的数量可以从 1 到 n 不等。

输入负载

{
"object_type": "contact",
"query_fields": [
{
    "field_name": "CreatedById", "field_value": "005g0000003qelYAAQ"},
{
    "field_name": "BillingState", "field_value": "KA"}
]
}

示例输出:

#[json:query_fields[0]/field_name] = '#[json:query_fields[0]/field_value]' AND #[json:query_fields[0]/field_name] = '#[json:query_fields[0]/field_value]'

我找到了解决这个问题的办法,想和大家分享一下。

第 1 步:将上述输入负载转换为数组:

    <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload map {
    field_name : $.field_name,
    field_value : $.field_value
}]]></dw:set-payload>

第 2 步:使用表达式组件遍历数组并获取它的值,以便我可以使用这些值在我的流程中进一步形成 Salesforce 查询的 where 子句。

<![CDATA[String wrcls ="";
int m=1;
int n=0;
for (String counter : flowVars.queryfields)
{
wrcls += payload[m].field_name[n] + " = " + "'" + payload[m].field_value[n] + "'"  +  " AND " 
m = m + 1;
n = n + 1;

}

payload = wrcls;

payload = payload.replaceAll(" AND $", "");]]>