Я новичок в муле и не могу преобразовать этот вложенный массив в требуемый формат. Я искал различные ссылки, но не смог найти много помощи, соответствующей моему требованию. Я прилагаю фрагмент, который я пробовал до сих пор, и я не могу понять, как действовать дальше.
Код
%dw 2.0
output application/json
var myvar = {
"name" : ["Shawn","James","Paul"],
"sd" : ["2020-12-23","2020-12-24","2020-12-24"],
"ed" : ["2020-12-25","2020-12-28","2020-12-27"]
}
---
myvar.name zip myvar.sd zip myvar.ed
Требуемый вывод
[
{
'name': "shawn",
'sd': "2020-12-23",
'ed': "2020-12-25"
},
{
'name': "james",
'sd': "2020-12-24",
'ed': "2020-12-28"
},
{
'name': "Paul",
'sd': "2020-12-24",
'ed': "2020-12-27"
}
]
Фактический результат
[
[
[
"Shawn",
"2020-12-23"
],
"2020-12-25"
],
[
[
"James",
"2020-12-24"
],
"2020-12-28"
],
[
[
"Paul",
"2020-12-24"
],
"2020-12-27"
]
]
Любое руководство или подсказка или любые соответствующие ссылки были бы очень полезны для меня.
@DaniilLoban, какой компилятор вы ожидаете?
Картик, для запуска кода
Вы можете запустить собственный экземпляр игровой площадки, используя образ докера, расположенный по адресу hub.docker.com/r/machaval/dw-playground
Инструкция по настройке такая же - medium.com/@ramsunka/…
@SalimKhan Это просто онлайн-тестер для тестирования сценариев переплетения данных или он делает что-то еще?
Это площадка для создания, выполнения и тестирования ваших скриптов.
Спасибо @SalimKhan. Я обязательно последую за этим
Попробуйте с этим .. Есть много способов решить эту проблему !!
%dw 2.0
output application/json
import * from dw::core::Arrays
var myvar = {
"a": ["Shawn", "James", "Paul"],
"b": ["2020-12-23", "2020-12-24", "2020-12-24"],
"c": ["2020-12-25", "2020-12-28", "2020-12-27"]
}
---
1 to 3 map
{
name: drop(myvar.a,($-1))[0],
sd: drop(myvar.b,($-1))[0],
ed: drop(myvar.c,($-1))[0]
}
Спасибо @SalimKhan. Это сработало хорошо ... Не могли бы вы вкратце объяснить, как это работает? я новичок в этом
Конечно .. Я пытаюсь создать своего рода цикл for, используя от 1 до 3, или я мог бы сделать от 1 до sizeOf (myvar.a) (если размер трех массивов всегда будет одинаковым). После этого речь идет о создании объекта, который необходим. Drop — это основная функция массивов (docs.mulesoft.com/mule-runtime/4.3/dw-arrays-functions-drop), которая удаляет первые n элементов, указанных в определении функции — drop (array,n) и возвращает массив с остальными элементами. Итак, на каждой из итераций я продолжаю выбирать первый элемент из остаточного массива.
В первой итерации (когда $ =1 , начиная с 1) он не отбрасывал бы ничего, и, таким образом, [0]-й элемент фактически давал бы первый требуемый набор «Шон», «2020-12-23», «2020». -12-25". Затем, когда $ = 2, он отбрасывает Шона и сохраняет Джеймса и Пола, а [0]-й элемент дает мне Джеймса и остальные поля для sd и ed. Точно так же, когда $ равно 3 , первые два элемента были бы удалены, и остались детали для Пола, которые я могу выбрать, используя [0]-й элемент, поскольку функция удаления всегда возвращает массив. ХТН.
Спасибо @SalimKhan ... Это было очень полезно .. Но если размер массива когда-нибудь изменится, что мне делать в этом случае? Как сейчас, если каждый массив имеет 5 элементов, что мне делать в этом случае?
от 1 до sizeOf(myvar.a)
я понял это ... спасибо ... личный вопрос, например, как я могу получить хорошее сцепление с dataweave? какие-нибудь советы? @СалимХан
Практикуйтесь, читайте и, возможно, продолжайте чаще посещать stackoverflow с вопросами и решениями, связанными с DW :)
Вы знаете какой-нибудь онлайн-компилятор для кода?