【问题标题】:The name cannot contain any of the following symbols: '[, ], .'.'. for Compose in Azure Logic App名称不能包含以下任何符号:'[, ], .'.'。在 Azure 逻辑应用中撰写
【发布时间】:2020-03-25 15:43:42
【问题描述】:

我有以下 JSON,需要在逻辑应用中更新

{
  "name": "SampleDoc",
  "type": "123",
  "properties": {
    "GP.Test": "M1",
    "MG.Test": "C1"
  }
}

我使用了以下 setProperty 语法:-

@setProperty(variables('ResponseBody'),'properties', setProperty(variables('ResponseBody')['properties'], 'test','abc'),
setProperty(variables('ResponseBody')['properties'], 'GP.Test','M2'))

我想要的 JSON 输出应该是

{
  "name": "SampleDoc",
  "type": "123",
  "properties": {
    "GP.Test": "M2",
    "MG.Test": "C1"
  }
}

但是当我运行它时,我收到了这个错误:-

无效模板。无法在“1”行和“2617”列的操作“撰写”输入中处理模板语言表达式:“提供的属性名称“GP.Test”包含这些无效字符“.”。名称不能包含以下任何符号:'[, ], .'.'。

谁能建议我们是否可以处理 '.'内部作曲或任何其他方式来实现这一目标?

【问题讨论】:

    标签: json azure azure-resource-manager azure-logic-apps


    【解决方案1】:

    是的,这是逻辑应用中发生的正确行为。原因是您使用了 set 属性函数来设置 GP.Test 属性的值。在逻辑应用中使用表达式时,“.”运算符是保留运算符,将用于访问表达式、函数等的子属性等。因此您会收到错误消息。解决这个问题其实很简单,直接使用 compose 动作而不使用 set 属性。下面的示例屏幕截图。

    或者,如果您想要复杂的转换,那么通过集成帐户使用流动转换是可行的方法

    【讨论】:

    • 感谢您的建议!我的情况有点不同,因为我从不同的源系统获取 JSON,这是巨大的。我需要在其中更改大约 20-25 个元素。我不想使用液体转换,但我没有任何其他选择。
    • 是的,这是正确的,对于复杂的转换,应该使用集成帐户。您可以通过创建一个基本上进行液体转换的 azure 函数来绕过集成帐户的需要。但如果回复满意,能否请您将其标记为答案,以便其他用户从中受益?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 2020-05-02
    相关资源
    最近更新 更多