Невозможно преобразовать массив json в dataweave

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

Код

%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"
  ]
]

Любое руководство или подсказка или любые соответствующие ссылки были бы очень полезны для меня.

Вы знаете какой-нибудь онлайн-компилятор для кода?

Daniil Loban 26.12.2020 13:31

@DaniilLoban, какой компилятор вы ожидаете?

Karthik 26.12.2020 13:43

Картик, для запуска кода

Daniil Loban 26.12.2020 13:45

Вы можете запустить собственный экземпляр игровой площадки, используя образ докера, расположенный по адресу hub.docker.com/r/machaval/dw-playground

Salim Khan 26.12.2020 13:52

Инструкция по настройке такая же - medium.com/@ramsunka/…

Salim Khan 26.12.2020 13:53

@SalimKhan Это просто онлайн-тестер для тестирования сценариев переплетения данных или он делает что-то еще?

Karthik 26.12.2020 13:59

Это площадка для создания, выполнения и тестирования ваших скриптов.

Salim Khan 26.12.2020 14:16

Спасибо @SalimKhan. Я обязательно последую за этим

Karthik 26.12.2020 14:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
8
105
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Попробуйте с этим .. Есть много способов решить эту проблему !!

%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. Это сработало хорошо ... Не могли бы вы вкратце объяснить, как это работает? я новичок в этом

Karthik 26.12.2020 13:58

Конечно .. Я пытаюсь создать своего рода цикл for, используя от 1 до 3, или я мог бы сделать от 1 до sizeOf (myvar.a) (если размер трех массивов всегда будет одинаковым). После этого речь идет о создании объекта, который необходим. Drop — это основная функция массивов (docs.mulesoft.com/mule-runtime/4.3/dw-arrays-functions-drop‌​), которая удаляет первые n элементов, указанных в определении функции — drop (array,n) и возвращает массив с остальными элементами. Итак, на каждой из итераций я продолжаю выбирать первый элемент из остаточного массива.

Salim Khan 26.12.2020 14:05

В первой итерации (когда $ =1 , начиная с 1) он не отбрасывал бы ничего, и, таким образом, [0]-й элемент фактически давал бы первый требуемый набор «Шон», «2020-12-23», «2020». -12-25". Затем, когда $ = 2, он отбрасывает Шона и сохраняет Джеймса и Пола, а [0]-й элемент дает мне Джеймса и остальные поля для sd и ed. Точно так же, когда $ равно 3 , первые два элемента были бы удалены, и остались детали для Пола, которые я могу выбрать, используя [0]-й элемент, поскольку функция удаления всегда возвращает массив. ХТН.

Salim Khan 26.12.2020 14:07

Спасибо @SalimKhan ... Это было очень полезно .. Но если размер массива когда-нибудь изменится, что мне делать в этом случае? Как сейчас, если каждый массив имеет 5 элементов, что мне делать в этом случае?

Karthik 26.12.2020 14:13

от 1 до sizeOf(myvar.a)

Salim Khan 26.12.2020 14:14

я понял это ... спасибо ... личный вопрос, например, как я могу получить хорошее сцепление с dataweave? какие-нибудь советы? @СалимХан

Karthik 26.12.2020 14:16

Практикуйтесь, читайте и, возможно, продолжайте чаще посещать stackoverflow с вопросами и решениями, связанными с DW :)

Salim Khan 26.12.2020 14:18

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