Azure APIM | Liquid 模板 - 无需集成帐户即可将 JSON 转换为 XML

Vic*_*yre 1 liquid azure-api-management azure-logic-apps apim

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

以下是我从本地数据库获取到 Logic App 的示例数据:

{
    "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": {}
}
Run Code Online (Sandbox Code Playgroud)

...然后我的计划是调用内部 API 并应用某种策略(我相信我们可以在入站/出站策略中使用 Liquid 模板,而不使用集成帐户或 Azure 函数)将上面的数据转换为下面的 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>
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

Hur*_*hen 5

针对这个需求,我创建了一个APIM并编辑其策略如下,供大家参考:

在此输入图像描述

正如您提到的字段<FirstName>, <LastName>... 是可选的。如果您仍然希望<FirstName>标签显示为空值,则无需执行任何其他操作。如果您不想<FirstName>在没有值时显示标签,则需要编辑液体模板,如下所示:

在此输入图像描述

希望有帮助~