Krátce poté, co jsem přidal svou vlastní odměnu, jsem přišel na řešení. Můj problém má stejnou základní strukturu, což je rodičovský identifikátor a několik N podřízených párů klíč/hodnota pro hodnocení (kvalita, hodnota atd...).
Nejprve budete potřebovat vstupní krok JSON, který získá pole SKU, Name a size_break_costs, vše jako řetězce. Důležitou součástí je, že size_break_costs je řetězec a je to v podstatě pouze stringified pole JSON. Ujistěte se, že na kartě Obsah vstupu JSON je zaškrtnuto „Ignorovat chybějící cestu“ pro případ, že byste získali pole s prázdným polem nebo pole z nějakého důvodu chybělo.
Pro svá pole použijte:
Name | Path | Type
ProductSKU | $.sku | String
ProductName | $.name | String
SizeBreakCosts | $.size_break_costs | String
Po tomto kroku jsem přidal blok "Filter rows" s podmínkou "SizeBreakCosts IS NOT NULL", který je poté předán do druhého vstupního bloku JSON. V tomto druhém bloku JSON budete muset zkontrolovat „Zdroj je definován v poli?“ a nastavit hodnotu „Získat zdroj z pole“ na „SizeBreakCosts“ nebo jak jste to pojmenovali v prvním vstupním bloku JSON.
Znovu se ujistěte, že je zaškrtnuto "Ignorovat chybějící cestu" a také "Ignorovat prázdný soubor". Z tohoto bloku budeme chtít získat dvě pole. S každým předaným řádkem již budeme mít ProductSKU a ProductName a tento druhý krok vstupu JSON je dále rozdělí na mnoho řádků, které budou ve vstupním JSON SizeBreakCosts. Pro pole použijte:
Name | Path | Type
Quantity | $.[*].quantity | Integer
Size | $.[*].size | String
Jak vidíte, tyto cesty používají "$.[*].FieldName", protože řetězec JSON, který jsme předali, má jako kořenovou položku pole, takže získáváme každou položku v tomto poli a analyzujeme její množství a velikost.
Nyní by měl mít každý řádek SKU a název z nadřazeného objektu a množství a velikost z každého podřízeného objektu. Po uložení tohoto příkladu do textového souboru jsem dostal:
ProductSKU;ProductName;Size;Quantity
SK3579;Authority;S; 80
SK3579;Authority;M; 14
SK3579;Authority;L; 55