Как указать значения свойств узла JSON при разборе / повторении в приложениях логики Azure? - PullRequest
1 голос
/ 30 мая 2019

TL; DR Как мне указать определенное свойство узла JSON в Azure Logic Apps ' ParseJSON> Для каждого шага , когда дизайнер дает мне доступ только к родительским узлам?

Я создаю приложение логики, которое:

  1. Получает и анализирует список людей как данные JSON из внешней системы
  2. Создает новый файл JSON сдругая структура
  3. Отправляет новый файл во вторую внешнюю систему

Ответ JSON от элемента 1 имеет такую ​​структуру:

{
    "Success": true,
    "Message": "Completed",
    "Result": [
        {
            "EmployeeId": {
                "DisplayValue": "PW123",
                "FieldHistory": []
            },
            "EmailId": {
                "DisplayValue": "*****.*****@******.co.uk",
                "FieldHistory": []
            }
        },
        {
            "EmployeeId": {
                "DisplayValue": "PW789",
                "FieldHistory": []
            },
            "EmailId": {
                "DisplayValue": "*****.*****@******.co.uk",
                "FieldHistory": []
            }
        },
        .... removed for brevity
    ]
}

В конструкторе, еслиЯ добавляю шаг Data Operations > Parse JSON > For Each, он позволяет мне указывать свойства, но на слишком высоком уровне:

enter image description here

Обратите внимание, дизайнер дает мне EmployeeId, но на самом деле мне нужно EmployeeId.DisplayValue, то есть свойства и их значения в формате JSON, а не простая строка, содержащая только значения EmployeeId или EmailId.

Может ли JSON считываться на более глубоком уровне IТребуется использование дизайнера?

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

Если я не ошибаюсь, вы можете сделать что-то в строках Parse_JSON()['EmployeeId']['DisplayValue'] <- это, вероятно, не точное совпадение, но синтаксис такой. </p>

Способ, которым вы делаете это, заключается в том, что вы либо пишете его в представлении кода, либо в конструкторе, который запускаете для выражения, добавляете пробелы с динамическим содержимым и заканчиваете добавлением тега ['DisplayValue']. ​​

1 голос
/ 31 мая 2019

Для поддержки ввода AdAstra и предоставления канонического ответа для дальнейшего использования ...

Блок ForEach вводил в заблуждение и фактически не требовался.Вместо этого требовался блок Select, который затем необходимо было отредактировать в представлении кода (согласно рекомендации @AdAstra), чтобы выбрать нужные поля:

enter image description here

enter image description here

Мне все еще нужно выяснить, как обернуть вывод в желаемую структуру, и обновлю, когда это будет решено. Получаетсячто преобразование JSON в новую структуру также очень просто благодаря представлению кода.Я только что указал желаемый вывод для существующей логики:

             "from": "@body('Parse_JSON')?['Result']",
             "select": {
                 "Option1": "Value1",
                 "Option2": "Value2",
                 "People": [
                     {
                         "Email": "@item()['EmailId']['DisplayValue']",
                         "FirstName": "@item()['FirstName']['DisplayValue']"
                     }
                  ]
             }

Обратите внимание, что представление Designer View не позволяет вносить изменения в более сложные варианты выбора после их указания в коде.

...