Xml 到 Json 液体模板停止在 Azure 逻辑应用程序上工作

Xml to Json liquid template stopped working on Azure Logic Apps

在成功映射一个月后,我们的模板给出了不同的结果,但过程没有变化。 Xml片段如下:

  <Authorisation>
    <Application>
    </Application>
    <Role>Role on</Role>
    <Role>Role two</Role>
  </Authorisation>

和映射:

        "roles":[
            {% JSONArrayFor userRole in authorisation where Role-%}
            {
            "role":"{{userRole}}"
            }
            {% endJSONArrayFor -%}
        ]

Logic App 过去常常生成适当的 json 集合,但现在,突然间集合 是空的。

我可以看到 authorisation.Role 只生成第一个项目“Role one” autorisation.Role.size 给出 11。 For 循环而不是 JSONArrayFor read "role one" char by char.It all 意味着映射只读取第一个角色元素 - 没有集合

问题仅针对 Xml 简单类型(仅 xml 具有字符串值的元素)。 我们用同样的方式处理复杂类型,还是可以的。

上个月 Azure LogicApps 的内部是否更改了映射过程?

似乎where Role在液体中不起作用。我不确定它在过去是否有效,但我通常先将 xml 转换为 json 然后再将 json 转换为 json 如果我想实现此需求.我在下面提供我的解决方案供您参考:

1. 我初始化一个名为 xmlString 的变量来存储与您的 xml 数据相同的 xml。

2. 然后我初始化另一个名为 jsonString 的变量并在其值框中输入一个表达式(将 xml 转换为 json).

3.之后,通过“Parse JSON”动作解析jsonString

4.最后,使用“Transform JSON to JSON”将jsonString转换成你想要的格式。

我的液体贴图是:

{% assign items = content.Authorisation.Role %}
{
    "roles": [
        {%- for item in items -%}
            {
                "role": "{{item}}"
            },
        {%- endfor -%}
    ]
}

5. 运行逻辑应用,得到如下图所示的结果:

这是 MS 中的错误,已修复