json - 在 Yaml 文件中添加查找引用值
问题描述
输入 JSON 是
%dw 2.0
output application/json
---
[
{
"Master_Job__r": {
"Description_of_Loss__c": "This is Raja",
"Date_of_Loss__c": "2020-06-08",
"Id": null,
"type": "Master_Job__c"
},
"Amount__c": null,
"Job_Number__c": "C##-#7-00041",
"Property_ID__r": {
"Country__c": "United States",
"City__c": "Chennai",
"Zip__c": "77777",
"Address_Line_1__c": "null Testa St",
"Id": null,
"type": "Home",
"State__c": "CA",
"phone__C": "948-125-6666",
"Job_Number__C": "GSD-45613",
"Phone_Ext__C": "257452",
"TOL_Code__c": "EARTHQUAKE",
"TOL_desc__c": "",
"PolicyNum__c": "GSD-123654",
"COvapplyTo__c": "0",
"PolicyLim__c": "156",
"PolDeduc__c": "1562",
"Covname__c": "Rup",
"CovType__c": "4",
"id__c": "4586",
"Date_Taken__c": "2020-08-16",
"Email__c": "sfadmin@demandblue.com",
},
"Email__C": "rupesh@gmail.com",
"Account_Roles__r": [
{
"Multiple_Roles__c": "Primary/Bill-to;Caller",
"Id": null,
"type": "Account_Roles__c",
"Contact_ID__r": {
"Name": "Test QA"
}
},
{
"Multiple_Roles__c": "Project Site Contact",
"type": "Account_Roles__c",
"Contact_ID__r": {
"Name": "Test DB Con002"
}
}
],
"Id": null,
"Project_Manager_Email__c": null
}
]
XML 中的 Dataweave 代码是
%dw 2.0
output application/xml
---
XACTDOC: {(payload map(object,index)->{
ADM:{
dateofloss @("Dateofloss":payload.Master_Job__r[0].Date_of_Loss__c as String,"dateReceived":payload.Property_ID__r[0].Date_Taken__c as String):""default""
},
TOLcode: {
"test": payload.Property_ID__r[0].TOL_Code__c as String,
"Desc": p('Typeofloss.EARTHQUAKE')
}
})}
输出 XML 格式为
<?xml version='1.0' encoding='UTF-8'?>
<XACTDOC>
</ADM><Coverage_Loss><PolicyNumber PolNum="GSD-123654" claimNumber="GSD-45613"/>
<TOLcode><test>EARTHQUAKE</test><Desc>Earthquake</Desc></TOLcode></XACTDOC>
我已经在 .YAML 文件中创建并存储了一个名称值查找,例如
Typeofloss:
EARTHQUAKE: "Earthquake"
FIRE: "Fire"
Flood: "Flood"
FREEZE: "Freeze"
VANDALISM: "Vandalism"
ENVIRONMENT: "Environmental Remediation"
STORM: "Hurrican/Tornado/Blizzard/Noreaster"
现在我的要求是,如果 TOL_CODE“测试”字段是“风暴”,那么我需要“DESC”字段作为“飓风/龙卷风/暴雪/诺雷斯特”作为输出。我将动态获取 Input TOL_CODE 值。我们如何在不手动输入的情况下获取 Dataweave 表达式中的查找值。我试过这个逻辑,但它不起作用。
“测试”:payload.Property_ID__r[0].TOL_Code__c 作为字符串,“Desc”:p('Typeofloss.'+payload.Property_ID__r[0].TOL_Code__c)
解决方案
用于++
连接 Desc 字段的字符串,即
"Desc": p('Typeofloss.' ++ payload.Property_ID__r[0].TOL_Code__c)
参考:https ://docs.mulesoft.com/mule-runtime/4.3/dw-core-functions-plusplus#plusplus2
推荐阅读
- java - if (!string.equals.string) 似乎一直在运行,不仅不等于
- c++ - 如何在算法中处理具有不同命名成员函数的类?
- canvas - Html 5画布的缩放问题
- python - 在线编译器中 Python 的副作用错误
- vue.js - 如何使用棱镜组字段作为 vuetify v-select 元素中的项目?
- css - 为什么网格模板区域中缺少网格区域名称会创建额外的轨道?
- python - scrapy splash解决recaptcha
- google-analytics - 解决 Google Analytics 和 Google Optimize 之间的配置不匹配问题?
- c# - 只有赋值、调用、递增、递减、等待、Unity3D
- asp.net-core - 将 UTC 偏移量传递到控制器路由中