如何在Mulesoft中的Xml中比较JSON对象值

问题描述

我的Json有效负载是

[
    {
        "Customer Contacted": "Rupesh","Inspected": "Mahesh","Lost": "Fire","Job Start Date": "","Work Complete": "","Billing Complete": ""
    }
]

我的XML是

%dw 2.0
output application/xml 
---

    {
        root: {
            CustomerContacted: if(payload."Customer Contacted"=="Rupesh") "Hari" 
            else null,Inspected: if(payload."Inspected"=="Mahesh")"vamsi"
            else null,Lost: payload.Lost,JobStartDate: payload."Job Start Date",WorkComplete: payload."Work Complete",BillingComplete: payload."Billing Complete"
        }
    }

如果这些值与“有效负载”中的值和“条件”中提供的值匹配,则应更改该值。 转换后,我的输出低于输出。

<?xml version='1.0' encoding='UTF-8'?>
<root>
  <CustomerContacted/>
  <Inspected/>
  <Lost>Fire</Lost>
  <JobStartDate></JobStartDate>
  <WorkComplete></WorkComplete>
  <BillingComplete></BillingComplete>
</root>

我在“与客户联系”和“已检查”字段中得到的值为空,但是我期望“ Rupesh”和“ Mahesh”的值为“ Hari”和“ Vamsi”

请让我知道需要在XML代码中进行哪些更改。

解决方法

有效负载是一个数组,要将元素与字符串匹配,需要定义索引。例如,在您的Payoad上,Customer Contacted是对象的一部分,而有效负载类型是数组。

语法应为:

if(payload."Customer Contacted"[0] == "Rupesh") "Hari" 
   else null

示例:

%dw 2.0
output application/xml
---
{
        root: {
            CustomerContacted: if(payload."Customer Contacted"[0] == "Rupesh") "Hari" 
            else null,Inspected: if(payload."Inspected"[0]=="Mahesh")"vamsi"
            else null,Lost: payload.Lost[0],JobStartDate: payload."Job Start Date"[0],WorkComplete: payload."Work Complete"[0],BillingComplete: payload."Billing Complete"[0]
        }
}
,

由于您的输入是一个数组,因此需要对其进行迭代以获取值或使用数组符号[0]对索引进行硬编码。我建议使用map函数,因为如果得到的输入数组的大小大于1,则硬编码索引是不可扩展的。在这种情况下,应执行以下操作:

%dw 2.0
output application/xml 
---
root: {
    subroot: payload map {
        CustomerContacted: if($."Customer Contacted"=="Rupesh") "Hari" else null,Inspected: if($."Inspected"=="Mahesh") "vamsi" else null,Lost: $.Lost,JobStartDate: $."Job Start Date",WorkComplete: $."Work Complete",BillingComplete: $."Billing Complete"
    }
}

注意:如果输入数组中有多个项目,则需要输出subroot字段,否则将产生错误:Trying to output second root,因为这将导致无效的xml结构。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...