Wkrótce po tym, jak dodałem własną nagrodę, znalazłem rozwiązanie. Mój problem ma tę samą podstawową strukturę, która jest identyfikatorem rodzica i pewną liczbą N par klucz/wartość dla ocen (jakość, wartość itp.).
Najpierw potrzebujesz kroku wejściowego JSON, który pobiera tablicę SKU, Name i size_break_costs, wszystkie jako ciągi. Ważną częścią jest to, że size_break_costs jest ciągiem znaków i jest po prostu ciągiem tablicy JSON. Upewnij się, że na karcie Treść danych wejściowych JSON zaznaczona jest opcja „Ignoruj brakującą ścieżkę”, na wypadek gdyby pojawiła się tablica z pustą tablicą lub z jakiegoś powodu brakuje pola.
Dla swoich pól użyj:
Name | Path | Type
ProductSKU | $.sku | String
ProductName | $.name | String
SizeBreakCosts | $.size_break_costs | String
Po tym kroku dodałem blok „Filtruj wiersze” z warunkiem „SizeBreakCosts IS NOT NULL”, który jest następnie przekazywany do drugiego bloku wejściowego JSON. W tym drugim bloku JSON musisz sprawdzić „Źródło jest zdefiniowane w polu?” i ustawić wartość „Pobierz źródło z pola” na „SizeBreakCosts” lub cokolwiek nazwałeś w pierwszym bloku danych wejściowych JSON.
Ponownie upewnij się, że zaznaczono opcję „Ignoruj brakującą ścieżkę”, a także „Ignoruj pusty plik”. Z tego bloku będziemy chcieli uzyskać dwa pola. Będziemy już mieć ProductSKU i ProductName z każdym przekazanym wierszem, a ten drugi krok wejściowy JSON spowoduje dalsze podzielenie go na dowolną liczbę wierszy w wejściowym pliku JSON SizeBreakCosts. W przypadku pól użyj:
Name | Path | Type
Quantity | $.[*].quantity | Integer
Size | $.[*].size | String
Jak widać, te ścieżki używają „$.[*].FieldName”, ponieważ przekazany przez nas ciąg JSON ma tablicę jako element główny, więc pobieramy każdy element z tej tablicy i analizujemy jego ilość oraz rozmiar.
Teraz każdy wiersz powinien mieć SKU i nazwę z obiektu nadrzędnego oraz ilość i rozmiar z każdego obiektu podrzędnego. Zrzucając ten przykład do pliku tekstowego, mam:
ProductSKU;ProductName;Size;Quantity
SK3579;Authority;S; 80
SK3579;Authority;M; 14
SK3579;Authority;L; 55