Azure APIM | Liquid 模板 - 在没有集成帐户的情况下将 JSON 转换为 XML

Azure APIM | Liquid Template - Transform JSON to XML without an Integration Account

我正在构建一个逻辑应用程序以从我的本地 SQL 数据库中提取数据 -> 将其转换为 XML -> 将其发送到 SOAP API。

这是我从内部部署数据库进入逻辑应用程序的示例数据:

{
    "ResultSets": {
        "Table1": [
            {
                "ID": "VM001",
                "FirstName": "TestFirstName",
                "LastName": "TestLastName",
                "Email": "test1@company.com",
                "DOB": "1990-05-05"
            },
            {
                "ID": "VM002",
                "FirstName": "TestFirstName2",
                "LastName": "TestLastName2",
                "Email": "test2@company.com",
                "DOB": "1990-06-06"
            }
        ]
    },
    "OutputParameters": {}
}

...然后我的计划是调用内部 API 并应用某种策略(我相信我们可以在 Inbound/Outbound 策略中使用 Liquid 模板而不使用集成帐户或 Azure Function) 将上面的数据转换为下面的数据 XML 但我正在努力解决它:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <userRequest>
         <extMessageId>12345</extMessageId>
         <users>
            <!--1 or more repetitions:-->
            <user>
               <ID> ID from JSON data </ID>
               <!--Optional:-->
               <FirstName> FirstName from JSON data </FirstName>
               <LastName> Lastname from JSON data </LastName>
               <Email> Email from JSON data </Email>
               <DOB> DOB from JSON data </DOB>
            </user>
         </users>
      </userRequest>
   </soapenv:Body>
</soapenv:Envelope>

有人可以帮忙吗。

为了这个需求,我创建了一个 APIM 并编辑了它的政策,供您参考:

如您所述,字段 <FirstName><LastName>... 是可选的。如果您仍希望 <FirstName> 标签显示空值,则无需执行任何其他操作。如果您不想在 <FirstName> 标签没有值时显示它,您需要按如下方式编辑 liquid 模板:

希望对你有帮助~