【问题标题】:Iterate array object in liquid template在液体模板中迭代数组对象
【发布时间】:2019-12-04 21:41:37
【问题描述】:

我的 Liquid 模板在数组对象中迭代时遇到问题。我想将一个输入 json 转换成另一个输出 json。

这是我的液体模板:

{% assign clientList = Clients.value %}

{
    "value": [
        {% for client in clientList %}
            {
                "ACCOUNTNUM": "{{client.ACCOUNTNUM}}",
                "EMAIL": "{{client.EMAIL}}",
                "NAME": "{{client.NAME}}",
                "PHONE": "{{client.PHONE}}",
                "VATNUM": "{{client.VATNUM}}",
                "RECID": "{{client.RECID}}",
                "CANALID": "{{client.CANALID}}",
                "CANALDESC": "{{client.CANALDESC}}"
            }
                {% if forloop.Last == false %}
                , 
                {% endif %}
            {% endfor %}
    ]
}

这是一个输入json示例:

{
   "Clients":{
      "value":[
         {
            "@odata.etag":"",
            "ItemInternalId":"3a93f2aa-dd77-4297-88c4-13241343321",
            "ACCOUNTNUM":"01",
            "EMAIL":"info@example.es",
            "LANGUAGEID":"es",
            "NAME":"Lili S.A.",
            "PHONE":"943444666",
            "VATNUM":"A01",
            "DATAAREAID":"tr2",
            "RECID":1412,
            "DATAAREAID_x0023_2":"tr2",
            "DATAAREAID_x0023_3":"tr2",
            "CANALID":"C0010",
            "CANALDESC":"Group gg"
         },
         {
            "@odata.etag":"",
            "ItemInternalId":"3a23f2aa-dd77-4297-88c4-13241343321",
            "ACCOUNTNUM":"02",
            "EMAIL":"info@example.es",
            "LANGUAGEID":"es",
            "NAME":"Lili2 S.A.",
            "PHONE":"943444656",
            "VATNUM":"A02",
            "DATAAREAID":"tr2",
            "RECID":1412,
            "DATAAREAID_x0023_2":"tr2",
            "DATAAREAID_x0023_3":"tr2",
            "CANALID":"C0011",
            "CANALDESC":"Group2 gg"
         }
      ]
   }
}

当我启动我的逻辑应用程序时,我收到了这个错误:

{\"StatusCode\":400,\"ErrorCode\":18,\"Details\":null,\"Message\":\"将转换后的值转换为 JSON 时出错。转换后的值不是有效的 JSON。'解析值后遇到意外字符::. 路径'print1',第 5 行,位置 11。'\"

【问题讨论】:

    标签: json azure azure-logic-apps liquid-template


    【解决方案1】:

    根据测试,应该是你的液体中有如下所示的部分引起的:

    {% if forloop.Last == false %}
    , 
    {% endif %}
    

    我删除了这部分,液体贴图可以正常工作,这里我将我的液体贴图贴在下面供您参考:

    {
        "value": [
            {% for client in content.Clients.value %}
                {
                    "ACCOUNTNUM": "{{client.ACCOUNTNUM}}",
                    "EMAIL": "{{client.EMAIL}}",
                    "NAME": "{{client.NAME}}",
                    "PHONE": "{{client.PHONE}}",
                    "VATNUM": "{{client.VATNUM}}",
                    "RECID": "{{client.RECID}}",
                    "CANALID": "{{client.CANALID}}",
                    "CANALDESC": "{{client.CANALDESC}}"
                }, 
            {% endfor %}
        ]
    }
    

    不要担心最后一个“,”,因为“将 JSON 转换为 JSON”操作会处理它。在“将 JSON 转换为 JSON”操作的输出中,它不会在 json 末尾显示额外的“,”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 2022-07-26
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      相关资源
      最近更新 更多