1

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

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

和映射:

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

逻辑应用程序用于生成正确的 json 集合,但现在,突然集合是空的。

我可以看到 authorisation.Role 只产生第一个项目“Role one”,而 autorisation.Role.size 给出 11。For 循环而不是 JSONArrayFor 逐个读取“role one”字符。这一切都意味着映射只读取第一个角色元素 - 那里没有收藏

问题仅适用于 Xml 简单类型(只是带有字符串值的 xml 元素)。我们以相同的方式处理复杂类型,它仍然可以。

Azure LogicApps 中的某些内部是否已更改上个月的映射过程?

4

2 回答 2

2

这是MS中的一个错误,已修复

于 2020-09-11T13:27:53.277 回答
1

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

1.我初始化了一个名为的变量xmlString来存储与你的xml数据相同的xml。 在此处输入图像描述

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

3.之后,jsonString通过“ Parse JSON ”动作 解析在此处输入图像描述

4.最后,使用“ Transform JSON to JSON ”转换jsonString成你想要的格式。 在此处输入图像描述

我的液体地图是:

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

5.运行逻辑应用,得到如下结果: 在此处输入图像描述

于 2020-07-17T02:06:17.957 回答