在 Yaml 文件中添加查找参考值

Adding Lookup reference values in Yaml file

输入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“测试”字段是“STORM”,那么我需要“DESC”字段作为“Hurrican/Tornado/Blizzard/Noreaster”作为输出。 我将动态获取 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