Liquid Template - 如何将 JSON 对象作为字符串映射到输出字段

问题描述 投票:0回答:1

我是在逻辑应用程序中创建液体贴图的新手,在将 JSON 对象作为字符串映射到 JSON 输出上的字段时遇到一些问题。

我有这个输入,我想将每个对象作为字符串映射到 JSON 输出上的字段,这也是一个数组。

[
  {
    "firstName": "FirstName1",
    "lastName": "LastName1"
  },
  {
    "firstName": "FirstName2",
    "lastName": "LastName2"
  },
  {
    "firstName": "FirstName3",
    "lastName": "LastName3"
  }
]

我正在使用此代码创建 JSON 输出。

[
    {%- for rec in content -%}
        {
            "BrokerProperties": {
                "ContentType": "application/json",
                "SessionId": "1"
            },
            "body": "{{ rec }}"
        }
        {% if forloop.last == false %},{% endif %}
    {%- endfor -%}
]

但是,当我查看运行历史记录时,我发现正文是空的。

Logic App Run History

我的预期输出如下。我该怎么做?

[
  {
    "BrokerProperties": {
      "ContentType": "application/json",
      "SessionId": "1"
    },
    "body": "{\"firstName\": \"FirstName1\",\"lastName\": \"LastName1\"}"
    ...

我尝试将液体贴图更新为以下内容,但仍然不起作用。

"body": "{{ rec | json }}"
json azure-logic-apps liquid dotliquid
1个回答
0
投票

您不需要使用液体转化。所需的转换非常简单,可以通过

Compose
操作来处理:

{
  "type": "Compose",
  "inputs": [
    {
      "BrokerProperties": {
        "ContentType": "application/json",
        "SessionId": "1"
      },
      "body": "@{replace(replace(string(variables('MyArray')), '[', ''), ']', '')}"
    }
  ],
  "runAfter": {
    "Initialize_variable": [
      "Succeeded"
    ]
  }
}

MyArray 变量是用数组初始化的:

结果:

[
    {
        "BrokerProperties": {
            "ContentType": "application/json",
            "SessionId": "1"
        },
        "body": "{\"firstName\":\"FirstName1\",\"lastName\":\"LastName1\"},{\"firstName\":\"FirstName2\",\"lastName\":\"LastName2\"},{\"firstName\":\"FirstName3\",\"lastName\":\"LastName3\"}"
    }
]

© www.soinside.com 2019 - 2024. All rights reserved.