Объект JSON для массива с именем атрибута с использованием Power Automate

Я пытаюсь создать столбцы в списке SharePoint из JSON, используя поток Power Automate.

Мне удалось создать столбец с «Отправить HTTP-запрос в SharePoint» вручную, используя: { "__metadata": { "type": "SP.Field" },"FieldTypeKind": 9,"Title":"TestColumnInt"}

Однако я хочу автоматизировать процесс. Итак, я хочу зациклить все это в зависимости от количества необходимых столбцов, как описано в JSON.

На первом этапе мне не удается извлечь имя атрибута из массива. Например, для этого ввода (вход исходит из элементов потока PARSE JSON):

[
    {
        "date": "08/31/2020",
        "hour": 1,
        "production": 1,
        "machine": "Z22",
        "completeDate": "08/31/2020 01:00"
    },
    {
        "date": "08/31/2020",
        "hour": 4,
        "production": 1,
        "machine": "Z44",
        "completeDate": "08/31/2020 04:00"
    }
]

Я хочу вывод:

[ "date","hour","production", "machine","completeDate"] 

К сожалению, я не могу понять, как используются переменные объекта. Каждый раз, когда я использую функцию, например, split, я получаю сообщение об ошибке, похожее на «Ожидается строка или массив, а не объект».

Функциональные клавиши тоже несовместимы.

Заранее спасибо за вашу помощь !

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
0
229
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать соединитель Advanced Data Operations и операцию Json Properties to Name Value Pair Array, чтобы превратить первый элемент в массиве в структуру ключ/значение, которая затем позволит вам извлечь имена свойств.

Примечание. Каждый элемент должен быть сбалансирован (т. е. иметь одинаковый набор полей), для других вам потребуется проделать дополнительную работу, чтобы определить это. Однако в этом коннекторе есть и другие операции, которые помогут вам в этом.

Шаг Initialize JSON просто содержит ваш JSON, а следующий шаг преобразует структуру в объект JSON, который дает вам возможность динамически извлекать имена полей.

Это JSON, который будет возвращен...

[
  {
    "propertyName": "completeDate",
    "propertyType": "String",
    "propertyValue": "08/31/2020 01:00"
  },
  {
    "propertyName": "date",
    "propertyType": "String",
    "propertyValue": "08/31/2020"
  },
  {
    "propertyName": "hour",
    "propertyType": "Integer",
    "propertyValue": 1
  },
  {
    "propertyName": "machine",
    "propertyType": "String",
    "propertyValue": "Z22"
  },
  {
    "propertyName": "production",
    "propertyType": "Integer",
    "propertyValue": 1
  }
]

Затем вы можете перебрать этот массив, извлечь каждое имя свойства и создать массив, как вы описали в своем вопросе.

Большое спасибо за ваше решение. Однако «Свойства Json для именования массива пар значений» кажутся премиальной функцией. Нет ли другого способа получить этот массив?

Mano_Ala_1 18.04.2023 13:03

Тогда используйте LogicApps, нет такого понятия, как «Премиум», вы просто используете коннектор. Кроме того, вы можете использовать коннектор как действие HTTP и при необходимости обойти прямой коннектор. Имейте в виду, что это платный коннектор, но он очень дешевый.

Skin 18.04.2023 13:11

Извините, я очень новичок в этом. Когда я добавляю действие в поток и выбираю «Расширенные операции с данными», я могу выбрать действие «Свойства Json для именования массива пар значений» (кстати, рядом с ним есть зеленый премиум-тег), но параметры «Имя подключения» и «Ключ API расширенных операций с данными». У меня нет такого действия, как у вас.

Mano_Ala_1 18.04.2023 14:01

Да, вы должны подписаться на пробную версию, statesolutions.com.au/pricing … если вы хотите избежать премиум-класса, вам нужно использовать LogicApps в Azure. Это движок, на котором работает PowerAutomate, но он основан на потреблении. Вам предстоит многому научиться. 😊

Skin 18.04.2023 14:25

Я посмотрю на это. Большое спасибо за всю эту информацию. Я обязательно вернусь, когда достигну своей цели.

Mano_Ala_1 18.04.2023 14:43

Не беспокойтесь, я только что понял, что не дал вам выражение на втором шаге. Я использовал выражение first() для получения первого элемента в массиве и передал его. Это должен быть объект, который вы предоставляете, поэтому я использовал первую функцию. Кроме того, не забудьте отметить это как ответ, если он вам помог. Спасибо

Skin 18.04.2023 14:44

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