Как создать переменную инициализации приложения логики Azure после действия анализа json

у меня есть приложение логики в Azure. В настоящее время я застрял в инициализации переменной выражения после анализа json. я хочу перехватить параметр «appId», но все, что я получаю, это ноль, несмотря на то, что синтаксический анализ json выдает выход, поэтому кажется, что я выражаю неправильный синтаксис.

это мой вывод JSON на этапе анализа JSON

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals",
  "value": [
    {
      "id": "***********************",
      "deletedDateTime": null,
      "accountEnabled": true,
      "alternativeNames": [],
      "appDisplayName": "testapp",
      "appDescription": null,
      "appId": "******************************",
      "applicationTemplateId": null,
      "appOwnerOrganizationId": "****************************",
      "appRoleAssignmentRequired": false,
      "createdDateTime": "2024-06-23T10:24:17Z",
      "description": null,
      "disabledByMicrosoftStatus": null,
      "displayName": "testapp",
      "homepage": null,
      "loginUrl": null,
      "logoutUrl": null,
      "notes": null,
      "notificationEmailAddresses": [],
      "preferredSingleSignOnMode": null,
      "preferredTokenSigningKeyThumbprint": null,
      "replyUrls": [],
      "servicePrincipalNames": [
        "********************************"
      ],
      "servicePrincipalType": "Application",
      "signInAudience": "AzureADMyOrg",
      "tags": [
        "HideApp",
        "WindowsAzureActiveDirectoryIntegratedApp"
      ],
      "tokenEncryptionKeyId": null,
      "samlSingleSignOnSettings": null,
      "addIns": [],
      "appRoles": [],
      "info": {
        "logoUrl": null,
        "marketingUrl": null,
        "privacyStatementUrl": null,
        "supportUrl": null,
        "termsOfServiceUrl": null
      },
      "keyCredentials": [],
      "oauth2PermissionScopes": [],
      "passwordCredentials": [],
      "resourceSpecificApplicationPermissions": [],
      "verifiedPublisher": {
        "displayName": null,
        "verifiedPublisherId": null,
        "addedDateTime": null
      }
    },
    {
      "id": "**********************8",
      "deletedDateTime": null,
      "accountEnabled": true,
      "alternativeNames": [
        "isExplicit=False",
        "/subscriptions/******************************************/resourcegroups/Test-RG/providers/Microsoft.Logic/workflows/test"
      ],
      "appDisplayName": null,
      "appDescription": null,
      "appId": "******************",
      "applicationTemplateId": null,
      "appOwnerOrganizationId": null,
      "appRoleAssignmentRequired": false,
      "createdDateTime": "2024-07-11T09:32:51Z",
      "description": null,
      "disabledByMicrosoftStatus": null,
      "displayName": "testeldad",
      "homepage": null,
      "loginUrl": null,
      "logoutUrl": null,
      "notes": null,
      "notificationEmailAddresses": [],
      "preferredSingleSignOnMode": null,
      "preferredTokenSigningKeyThumbprint": null,
      "replyUrls": [],
      "servicePrincipalNames": [
        "***********************",
        "https://identity.azure.net/*******************/**********************"
      ],
      "servicePrincipalType": "ManagedIdentity",
      "signInAudience": null,
      "tags": [],
      "tokenEncryptionKeyId": null,
      "info": null,
      "samlSingleSignOnSettings": null,
      "addIns": [],
      "appRoles": [],
      "keyCredentials": [
        {
          "customKeyIdentifier": "*****************",
          "displayName": "CN=**********************",
          "endDateTime": "2024-10-09T09:27:00Z",
          "key": null,
          "keyId": "*********************",
          "startDateTime": "2024-07-11T09:27:00Z",
          "type": "AsymmetricX509Cert",
          "usage": "Verify"
        }
      ],
      "oauth2PermissionScopes": [],
      "passwordCredentials": [],
      "resourceSpecificApplicationPermissions": [],
      "verifiedPublisher": {
        "displayName": null,
        "verifiedPublisherId": null,
        "addedDateTime": null
      }
    }
  ]
}

я пробовал использовать этот синтаксис --> first(outputs('Parse_JSON')?['body/value'])['appId'] и многое-многое другое :)

Я использую «первый», потому что в выходных данных есть несколько экземпляров appId, поэтому я хочу перехватить первую часть. (не знаю, правильно ли это)

это результат компоновки -

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам необходимо инициализировать переменные в начале вашего потока. Вы можете установить переменную, чтобы обновить значение в любой момент потока. Приложения логики должны показывать вам ошибку, указывающую, что вы добавили инициализацию в середине процесса.

Спасибо, Джош, вообще-то я вначале использую Init. в этом потоке я хочу добиться ротации секретов SPN. Итак, все работает, за исключением того, что когда я хочу передать графику MS идентификатор SPN для добавления нового секрета и передачи его обратно в хранилище ключей, выходные данные будут нулевыми, поэтому я решил снова использовать init после анализа json, чтобы посмотреть, не пропустил ли я что-то .

Eldos 11.07.2024 21:37
Ответ принят как подходящий

Чтобы получить первый идентификатор приложения, вместо first(outputs('Parse_JSON')?['body/value'])['appId'] вы должны использовать это:

body('Parse_JSON')?['value']?[0]?['appId']

Тестирование:

Обновлять:

Анализ JSON перед извлечением значений полей, строго говоря, не требуется. Например, вы получаете содержимое JSON в выходных данных действия http:

Вы можете получить значение appId оттуда следующим образом:

body('HTTP')?['value']?[0]?['appId']

Спасибо @10p, ну, поток должен был завершиться, но значение вернулось пустым :(

Eldos 12.07.2024 07:24

@monsal Я добавил к ответу скриншот успешного теста

10p 12.07.2024 09:31

Спасибо @10p, выглядит хорошо. но со своей стороны я не получаю тех же результатов - это на моем этапе составления - может быть, схема анализа json не точна? (я добавил скриншот выше)

Eldos 14.07.2024 09:13

@monsal, JSON, который вы пытаетесь проанализировать, какое действие он производит? Можете ли вы поделиться полным JSON, а не его частью?

10p 15.07.2024 01:52

Да, прости. я опубликую это выше.

Eldos 15.07.2024 20:01

шаг перед использованием синтаксического анализа json — это HTTP-вызов для графика ms

Eldos 15.07.2024 20:09

@monsal, я провел еще один успешный тест, используя HTTP-вызов, получив JSON из вашего вопроса и получив оттуда первое значение appId - добавил подробности в конец моего ответа

10p 16.07.2024 15:18

Это помогает. Спасибо большое, чемпион :)

Eldos 16.07.2024 19:47

Другие вопросы по теме

Ошибка стенда приложения логики при заполнении сообщения из подписки на тему: VNetPrivatePortsNotConfigured
Приложение Azure Logic: создание CSV-формы JSON для отправки по электронной почте
Общий доступ Azure Key Vault отключен, как получить к нему доступ через портал через Интернет
Последовательно запускать приложение логики из служебной шины Azure
Запуск конвейера выпуска Azure DevOps из приложения логики и получение выходных данных переменной среды из конвейера
Блокировщик при добавлении действия BLOB-объекта в приложении логики
Силовой автомат. Удалить из родительского и дочернего списка, используя идентификатор из родительского списка
Удалить файлы из места назначения, если они удалены из источника с помощью приложения логики
Создание таблицы CSV на основе выходных данных Crowdstrike API
Приложения логики – как прочитать 2 строки через индексную переменную