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

时间:2017-10-23 10:16:28

标签: json mule-component mule-el

以下是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 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法,并想与我们共享同样的问题。

步骤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 $", "");]]>