HTTP-коннектор приложений логики Azure не анализирует JSON в запросах

    {
      "Query": {
        "inputs": {
          "headers": {
            "Content-Type": "application/json"
          },
          "method": "GET",
          "queries": {
            "f": "json",
            "temp": "\"test\": @json(body('http'))['candidates'][0]['location']['x']"
          },
          "uri": "https://testurl.com/restApi"
        },
        "runAfter": {

        },
        "type": "Http"
      }
    }

Он читается как «temp» как «test»: @json(body('http'))['candidates'][0]['location']['x']"

Если я изменю эту строку на

    "temp": "@json(body('http'))['candidates'][0]['location']['x']"

Он прочитал правильное значение из json. Не уверен, что это ошибка, или мне не хватает синтаксиса.


person Dhrumil    schedule 19.05.2017    source источник


Ответы (2)


Можете попробовать со следующим синтаксисом:

"temp": "\"test\": @{json(body('http'))['candidates'][0]['location']['x']}"
person Steven Van Eycken    schedule 19.05.2017

Вы можете попробовать то, что ответил Стивен (https://stackoverflow.com/a/44062649/7997843), или это, что более явно для меня:

"temp": "@concat('\"test\":', json(body('http'))['candidates'][0]['location']['x'])"

Я предлагаю вам прочитать об интерполяции строк на языке определения рабочего процесса здесь: https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-workflow-definition-language#Выражения

Ваш случай кажется предельным. Либо вы начинаете свое выражение с @ или @{, а затем имени вашей функции, либо вы можете начать со строки, но тогда у вас не будет другого выбора, кроме как использовать @{

person Julien B.    schedule 19.05.2017