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 $", "");]]>
以下是 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 $", "");]]>