#json #azure-data-factory #azure-data-factory-pipeline
#json #azure-data-factory #azure-data-factory-конвейер
Вопрос:
Дорогие, я использую ADF для анализа выходных данных REST API, которые поступают в структуре JSON. Проблема в том, что JSON содержит массив строк, каждое строковое значение содержит объект JSON. Я хочу извлечь значения самого внутреннего JSON.. Я пробовал несколько попыток, но пока безуспешно..
Пример структуры JSON
{
"tables": [
{
"name": "PrimaryResult",
,
"rows": [
["{"Subscription Name":"master","Operation Name":"5f2a763e4f5cabb8d38dd66a",... "}","other nested JSON".....
Я не могу проанализировать те JSON, которые поступают как строки, заключенные в двойные кавычки.
есть идеи??
Комментарии:
1. Если вы разочарованы отсутствием в ADF выбора из нескольких коллекций, когда дело доходит до синтаксического анализа JSON, пожалуйста, поддержите это: feedback.azure.com/d365community/idea /…
Ответ №1:
Вы можете использовать функцию json для изменения строки JSON на объект JSON.
Мой тест:
Используйте это выражение, чтобы получить значение Subscription Name
:
@json(activity('Web1').output.tables[0].rows[0][0])['Subscription Name']
Вывод заданной переменной activity:
Обновить
Я не уверен, что вам нужно. Похоже, вы хотите изменить всю строку JSON на объект JSON.
Если это так, вы можете создать переменную массива, выполнить цикл rows[0]
для каждого действия и преобразовать элементы в объект JSON в новом массиве.
Комментарии:
1. Это работает нормально. Но мне нужно передать весь внутренний JSON другому действию (например, копировать), чтобы разбить его и сохранить значения в столбцах базы данных.. что мне делать? Учитывая, что JSON содержит дополнительные вложенные массивы. Пожалуйста, сообщите..
2. @user9942114 Я обновляю свой ответ. Это вам нужно?
3. такой подход не позволит мне выполнять вложенные циклы или записывать проанализированные данные в файлы.. Пожалуйста, сообщите..
4. Пожалуйста, покажите мне скриншот вашего конвейера и расскажите мне все, что вам нужно.
5. @mamhh, предполагая, что вы хотите сделать что-то похожее на то, что я сделал: замените поле foreach «items» @activity(‘Получить список таблиц’).output.tables[0].rows[0] на @activity(‘Получить список таблиц’).output.tables[0]. строки это приведет к перебору строк. Затем замените @json(item()) на @item()[0]. При этом будет получен первый элемент в каждой строке.