自分の賞金を追加した直後に、私は解決策を見つけました。私の問題は同じ基本構造を持っています。それは親識別子であり、評価(品質、値など)のためのいくつかの数Nの子キー/値のペアです。
まず、SKU、Name、size_break_costs配列をすべて文字列として取得するJSON入力ステップが必要です。重要な部分は、size_break_costsが文字列であり、基本的には文字列化されたJSON配列であるということです。配列が空のパスを取得した場合、または何らかの理由でフィールドが欠落している場合に備えて、JSON入力の[コンテンツ]タブで[欠落しているパスを無視する]がオンになっていることを確認してください。
フィールドには、次を使用します:
Name | Path | Type
ProductSKU | $.sku | String
ProductName | $.name | String
SizeBreakCosts | $.size_break_costs | String
このステップの後に、「SizeBreakCosts IS NOT NULL」という条件で「行のフィルター」ブロックを追加しました。これは、2番目のJSON入力ブロックに渡されます。この2番目のJSONブロックでは、「ソースはフィールドで定義されていますか?」をチェックし、「フィールドからソースを取得」の値を「SizeBreakCosts」または最初のJSON入力ブロックで名前を付けた値に設定する必要があります。
繰り返しになりますが、「欠落しているパスを無視する」と「空のファイルを無視する」がチェックされていることを確認してください。このブロックから、2つのフィールドを取得する必要があります。渡された各行にはすでにProductSKUとProductNameがあり、この2番目のJSON入力ステップではさらに分割されますが、SizeBreakCosts入力JSONには多くの行があります。フィールドには、次を使用します:
Name | Path | Type
Quantity | $.[*].quantity | Integer
Size | $.[*].size | String
ご覧のとおり、これらのパスは「$。[*]。FieldName」を使用します。これは、渡したJSON文字列にルートアイテムとして配列が含まれているため、その配列内のすべてのアイテムを取得し、その量とサイズ。
これで、すべての行に親オブジェクトのSKUと名前、および各子オブジェクトの数量とサイズが含まれるはずです。この例をテキストファイルにダンプすると、次のようになります。
ProductSKU;ProductName;Size;Quantity
SK3579;Authority;S; 80
SK3579;Authority;M; 14
SK3579;Authority;L; 55