В соответствии с выборкой данных 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") и выполнить что-то вроде следующего:
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"
}
]
}
Что-то, о чем вам нужно знать:
Поскольку мы помещаем объект под свойством pages
в содержимое "Transform * 1063" * to JSON "действие, поэтому content
в жидком шаблоне представляет его.
В жидком шаблоне мы должны быть осторожны с запятой, поэтому я использую {%- if forloop.Last == true -%}
, чтобы судить, является ли это последним объектом в l oop, а затем судить, нужно ли нам добавить символ запятой.
Для вашего второго вопроса о what's the best approach for debugging Liquid ?
, к сожалению, я думаю, что мы можем просто заполнить ликвидный шаблон и загрузить его в учетную запись интеграции, и тогда мы увидим результат. Я не знаю, есть ли у нас способ отладить его легко.
Надеюсь, это поможет ~