Как преобразовать json в коллекцию в Power Apps

У меня есть приложение Power, которое использует поток от Power Automate.

Мой поток выполняет HTTP-запрос и отвечает JSON на мощные приложения, как показано ниже.

Вот текст в формате JSON:

       {"value": "[{\"dataAreaId\":\"mv\",\"AccountNum\":\"100000\",\"Name\":\"*****L FOOD AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100001\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100014\",\"Name\":\"****(SEB)\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100021\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100029\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"500100\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"500210\",\"Name\":\"****\"}]"}

Но когда я пытаюсь преобразовать этот JSON в коллекцию, он не ведет себя как список.

Это просто похоже на текст. Вот как я пытаюсь связать список.

Как я могу создать коллекцию из JSON для привязки к представлению галереи?

3 ответа

Решение

Я нашел решение. Наконец, я создаю коллекцию из отклика потока. Имя потока - GetVendor.

Ответ потока такой:

{"value": "[{\"dataAreaId\":\"mv\",\"AccountNum\":\"100000\",\"Name\":\"*****L FOOD AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100001\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100014\",\"Name\":\"****(SEB)\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100021\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"100029\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"500100\",\"Name\":\"**** AB\"},{\"dataAreaId\":\"mv\",\"AccountNum\":\"500210\",\"Name\":\"****\"}]"}

Код ниже создает список из этого ответа:

ClearCollect(_vendorData, MatchAll(GetVendors.Run(_token.value).value, "\{""dataAreaId"":""(?<dataAreaId>[^""]*)"",""AccountNum"":""(?<AccountNum>[^""]*)"",""Name"":""(?<Name>[^""]*)""\}"));

И я мог бы привязать номер учетной записи и имя из коллекции _vendorDatra к представлению галереи

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

Мое решение состояло в том, чтобы изменить сам поток, и я вернулся Response вместо Respond to a Power app or Flow, поэтому в основном я мог вернуть полный запрос с Http.

Это также вызвало у меня некоторые проблемы, потому что, когда я сгенерировал схему из образца, я не мог зарегистрировать поток в powerapp с ошибкой Failed during http send request.

Решение заключалось в том, чтобы вручную просмотреть схему ответа и изменить все типы столбцов на один из следующих трех, потому что другие не поддерживаются: string, integer или же boolean. Объект и массив могут быть установлены только для элементов верхнего уровня, но никогда для дочерних элементов, поэтому, если у вас есть что-то еще, кроме трех, упомянутых мной, замените его на строку. И никакое свойство не может быть оставлено с неопределенным типом.

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

Ниже приведен пример схемы шага ответа.

      {
    "type": "object",
    "properties": {
        "PropertyOne": {
            "type": "string"
        },
        "PropertyTwo": {
            "type": "integer"
        },
        "PropertyThree": {
            "type": "boolean"
        },
        "PropertyFour": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "PropertyArray1": {
                        "type": "string"
                    },
                    "PropertyArray1": {
                        "type": "integer"
                    },
                    "PropertyArray1": {
                        "type": "boolean"
                    }
        }
}

Теперь это легко.

Power Apps представила функцию ParseJSON, которая упрощает преобразование строки в коллекцию.

Таблица(ParseJSON(JSONString));

В галерее сопоставьте такие столбцы, как ThisItem.Value. Имя столбца

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