Жидкий шаблон Logica Apps спросить - PullRequest
0 голосов
/ 15 февраля 2020

Я полный новичок в Liquid, начал играть с ним несколько часов go.

Я пытаюсь проанализировать JSON и извлечь из него определенные пары значений ключа, но я Я не успешен на всех. JSON выводится из Azure Form Recognizer, и я пытаюсь сделать Liquid json 2 json в Logi c Apps.

JSON выглядит так

{
  "status": "success",
  "pages": [
    {
      "number": 1,
      "keyValuePairs": [
        {
          "key": [
            {
              "text": "Page No:",
              "boundingBox": [
                507.4
               ]
            }
          ],
          "value": [
            {
              "text": "1",
              "boundingBox": [
                586.8
              ],
              "confidence": 1.0
            }
          ]
        },
....
...

я ищу, чтобы l oop через массив keyValuePairs, а затем вытащил элемент "text" из массива "key", а элемент "text" + "trust" из массив "value".

Не могли бы вы помочь мне понять подход здесь? Я пробовал что-то вроде этого, но массив возвращается пустым

{
"results":[
{% for kvp in content.keyValuePairs  %}

{% for mykey in kvp.key  %}

"thiskey":"{{mykey.text}}
{%- endfor -%}
{% for myval in kvp.value  %}

"thisvalue":{{myval.text}}
"thisconfidence":{{myval.confidence}}
{%- endfor -%}
{%- endfor -%}
]
}

И второй вопрос: каков наилучший подход для отладки Liquid, чтобы я мог видеть, где я получаю ошибку, и настраивать?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

В соответствии с выборкой данных json и предоставленным вами шаблоном жидкости, я знаю, что в ваших json данных имеется более одного объекта со свойством keyValuePairs. Поэтому я думаю, что использование действия «Parse JSON» не является хорошим решением, лучше использовать жидкий шаблон, как вы упомянули в своем вопросе. Но я не уверен, что в ваших данных json есть несколько объектов со свойством pages?

Теперь я предполагаю, что у данных json есть только один объект под свойством pages, и я предоставляю решение жидкого шаблона для вашей справки (Если данные json имеют более одного объекта под свойством pages, пожалуйста, предоставьте более подробную информацию о ваших требованиях, и я изменю свое решение).

Я предполагаю ваши json данные, как показано ниже:

{
    "status": "success",
    "pages": [
        {
            "number": 1,
            "keyValuePairs": [
                {
                    "key": [
                        {
                            "text": "Page No:",
                            "boundingBox": [
                                507.4
                            ]
                        }
                    ],
                    "value": [
                        {
                            "text": "1",
                            "boundingBox": [
                                586.8
                            ],
                            "confidence": 1.0
                        }
                    ]
                },
                {
                    "key": [
                        {
                            "text": "Page No:",
                            "boundingBox": [
                                507.4
                            ]
                        }
                    ],
                    "value": [
                        {
                            "text": "2",
                            "boundingBox": [
                                586.8
                            ],
                            "confidence": 2.0
                        }
                    ]
                }
            ]
        }
    ]
}

1. Нам нужно получить объект под свойством pages и поместить его в «содержимое» действия «Преобразовать JSON в JSON». Сначала мы можем проанализировать все данные json (с помощью действия "Parse JSON") и выполнить что-то вроде следующего: enter image description here

2. Загрузить жидкий шаблон для учетной записи интеграции, пожалуйста, обратитесь к моему жидкому шаблону:

{
    "results":[
        {% for kvp in content.keyValuePairs  %}
            {%- if forloop.Last == true -%}
                {
                    {% for mykey in kvp.key  %}
                        "thiskey": "{{mykey.text}}",
                    {%- endfor -%}
                    {% for myval in kvp.value  %}
                        "thisvalue": "{{myval.text}}",
                        "thisconfidence": "{{myval.confidence}}"
                    {%- endfor -%}
                }
            {%- else -%}
                {
                    {% for mykey in kvp.key  %}
                        "thiskey": "{{mykey.text}}",
                    {%- endfor -%}
                    {% for myval in kvp.value  %}
                        "thisvalue": "{{myval.text}}",
                        "thisconfidence": "{{myval.confidence}}"
                    {%- endfor -%}
                },
            {%- endif -%}
        {%- endfor -%}
    ]
}

3. После запуска этого логи c мы можем получить результат как:

{
  "results": [
    {
      "thiskey": "Page No:",
      "thisvalue": "1",
      "thisconfidence": "1"
    },
    {
      "thiskey": "Page No:",
      "thisvalue": "2",
      "thisconfidence": "2"
    }
  ]
}

Что-то, о чем вам нужно знать:

  1. Поскольку мы помещаем объект под свойством pages в содержимое "Transform * 1063" * to JSON "действие, поэтому content в жидком шаблоне представляет его.

  2. В жидком шаблоне мы должны быть осторожны с запятой, поэтому я использую {%- if forloop.Last == true -%}, чтобы судить, является ли это последним объектом в l oop, а затем судить, нужно ли нам добавить символ запятой.

Для вашего второго вопроса о what's the best approach for debugging Liquid ?, к сожалению, я думаю, что мы можем просто заполнить ликвидный шаблон и загрузить его в учетную запись интеграции, и тогда мы увидим результат. Я не знаю, есть ли у нас способ отладить его легко.

Надеюсь, это поможет ~

0 голосов
/ 16 февраля 2020

Я попытался спроектировать рабочий процесс, используя ваш образец JSON полезной нагрузки.

Я проанализировал схему JSON и извлек из нее необходимые значения.

Поскольку ваша полезная нагрузка JSON немного сложна, нам нужно использовать выражения приложения Logi c для извлеките из него значение.

Полезная нагрузка, которую я использовал :

{
"status": "success",
"pages": [{
    "number": 1,
    "keyValuePairs": [{
            "key": [{
                "text": "Page No:",
                "boundingBox": [
                    507.4
                ]
            }],
            "value": [{
                "text": "1",
                "boundingBox": [
                    586.8
                ],
                "confidence": 1.0
            }]
        },
        "null"
    ]
}]

}

Как только вы получите выход JSON из восходящего потока действия, вы должны проанализировать его.

enter image description here

Теперь, инициализируйте пару переменных, чтобы получить требуемое значение из проанализированного JSON.

Выражение для использования в первой переменной : concat (body ('Parse_ JSON')? ['Pages'] [0]? ['KeyValuePairs'] [0]? [ 'ключ'] [0]? [ 'текст'], тело ( 'Parse_ JSON')? [ 'страницы'] [0]? [ 'keyValuePairs'] [0]? [ 'значение'] [0] ? ['text'])

Выражение для использования во второй переменной : body ('Parse_ JSON')? ['pages'] [0]? ['keyValuePairs '] [0]? [' Value '] [0]? [' Доверие ']

enter image description here

Наконец, приложения logi c после Ваша форма Recognizor будет выглядеть как-то ng вот так:

enter image description here

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...