すべてのプロダクト
Search
ドキュメントセンター

DataWorks:JSON 解析

最終更新日:Feb 27, 2026

DataWorks の Data Integration では、リアルタイム単一テーブル同期タスクで JSON 解析コンポーネントを使用して、ソースからの JSON データを構造化テーブルデータに解析できます。

JSON 解析コンポーネントの作成と構成

ステップ 1: Data Integration タスクの構成

  1. データソースを作成します。詳細については、「データソース管理」をご参照ください。

  2. Data Integration タスクを作成します。詳細については、「単一テーブルのリアルタイム同期タスクの構成」をご参照ください。

    説明

    Data Integration の単一テーブルのリアルタイム同期タスクでは、ソースノードと宛先ノードの間にデータ処理ノードを追加できます。詳細については、「サポートされるデータソースと同期ソリューション」をご参照ください。

ステップ 2: JSON 解析コンポーネントの追加

  1. リアルタイム単一テーブル同期タスクで、[データ処理] オプションを有効にし、[+ノードを追加] をクリックして、[JSON 解析] コンポーネントを選択します。

  2. ノードの名前と説明を入力し、JSON 解析コンポーネントを構成します。

    重要

    JSON データ構造を取得するには、まず Kafka などのソースで [データサンプリング] を実行します。

    固定フィールド

    • フォーマットされた JSON データの取得。

      方法

      説明

      データサンプリングから JSON を取得

      データサンプリング後、[JSON 解析用の固定フィールドを追加] をクリックして [JSON 解析用の固定フィールド] ダイアログボックスを開きます。[フィールドの選択] リストから、JSON データを含むソースフィールドを選択します。次に、[JSON データ構造の取得] をクリックして構造を取得します。

      image

      手動入力から JSON を取得

      データサンプリングを実行していない場合、またはソースデータが空の場合は、JSON 構造を手動で指定できます。

      [JSON テキストの編集] ボタンをクリックしてエディターを開きます。[JSON テキストの編集] ウィンドウで JSON コンテンツを入力し、[選択に戻る] をクリックしてフィールドを選択します。

      image

      リーフノードの解析

      • フォーマットされた [JSON データ構造] ビューで、リーフフィールドの横にある PixPin_2026-02-25_17-39-24 アイコンをクリックします。対応する解析ルールが [固定出力フィールド] セクションに自動的に追加されます。PixPin_2026-02-25_17-46-35

      • リーフノードの解析から生成されたテーブルの例。

      • image

      JSON オブジェクトの解析

      PixPin_2026-02-25_17-48-36

      [JSON データ構造] ビューで、解析するターゲットフィールドを見つけます。サンプル JSON の address フィールドなどの JSON オブジェクトを選択した場合は、その横にある PixPin_2026-02-25_17-39-24 アイコンをクリックします。次の解析オプションを含むダイアログボックスが表示されます:

      • JSON オブジェクト内の各キーと値のペアを個別のフィールドとして追加します。キーがフィールド名として使用され、対応する値が割り当てられます。

      • JSON オブジェクト全体を単一のフィールドとして追加します。値はオブジェクトの JSON 文字列です。

      • オプション

        アクション

        結果

        [JSON オブジェクト内の各キーと値のペアを個別のフィールドとして追加します。キーはフィールド名として使用され、対応する値が割り当てられます。] を選択します。

        このオプションは、オブジェクトを3つのフィールド(streetcityzip)に解析し、それぞれに対応する値を割り当てます。

        PixPin_2026-02-25_17-49-18

        image

        [JSON オブジェクト全体を単一のフィールドとして追加します。値はオブジェクトの JSON 文字列です。] を選択します。

        このオプションは、address オブジェクト全体を単一のフィールドに解析します。このフィールドの値には、streetcity、および zip のキーと値のペアが含まれます。

        PixPin_2026-02-25_17-51-11

        image

      JSON 配列の解析

      [JSON データ構造] ビューで、ターゲットフィールドを選択します。JSON 配列を選択すると、次の解析オプションを含むダイアログボックスが表示されます:

      • 配列を複数行の出力として追加します。

      • 配列全体を単一のフィールドとして追加します。値は配列の JSON 文字列です。

      オプション

      アクション

      結果

      サンプル JSON を使用して、配列 フィールドの横にある PixPin_2026-02-25_17-39-24 アイコンをクリックし、ダイアログボックスで [配列を複数行の出力として追加する。] を選択します。

      PixPin_2026-02-25_20-43-13

      image

      サンプル JSON を使用して、array1 フィールドと array2 フィールドの横にある PixPin_2026-02-25_17-39-24 アイコンをクリックし、配列を複数行出力として追加 を選択します。

      説明

      このオプションは、プライマリ配列のキーと値のペア内にあるネストされた配列を再帰的に解析しません。

      PixPin_2026-02-25_20-39-33

      サンプル JSON を使用して、配列 フィールドの横にある PixPin_2026-02-25_17-39-24 アイコンをクリックし、[配列全体を単一のフィールドとして追加します。値は配列の JSON 文字列です。] を選択します。

      PixPin_2026-02-25_20-42-30

      image
    • または、[フィールドを追加] をクリックしてフィールドを手動で追加することもできます。このオプションは、上流フィールドから値を取得できない場合や、サンプル JSON を提供していない場合に使用します。解析ルールを定義するには、値のパスを手動で編集して JSON コンテンツを取得します。パラメーターは以下のとおりです:

      パラメーター

      説明

      フィールド名

      新しいフィールドの名前で、下流ノードから参照されます。

      解析用の JSON パスを指定します。構文は次のとおりです:

      • $:ルートノードを表します。

      • .:子ノードを表します。

      • [][number] は配列インデックスを指定します。インデックスは 0 から始まります。

      • [*]:配列を複数行に展開します。各要素はレコード内の他のフィールドと結合され、個別の行として下流ノードに出力されます。

      説明

      パス内の JSON フィールド名には、英数字、ハイフン (-)、アンダースコア (_) のみを使用できます。

      デフォルト値

      JSON パスが存在しない場合 (上流テーブルのフィールドの変更など) に使用するデフォルト値。

      • NULL:フィールド値を NULL に設定します。

      • 入力しない:フィールドは入力されません。NULL とは異なり、宛先テーブルの対応するフィールドにデフォルト値が構成されている場合、NULL の代わりにそのデフォルト値が使用されます。

      • ダーティデータ:レコードは同期タスクのダーティデータとしてカウントされます。ダーティデータの許容設定によっては、タスクが停止する場合があります。

      • 定数を手動で入力:ユーザー定義の定数をフィールドの値として使用します。

      image

    動的フィールド

    • フォーマットされた JSON ビューで、動的に解析するターゲット JSON オブジェクトを選択します。システムは、その JSON オブジェクト配下の各フィールドに対する解析構成を自動的に追加します。

    • タスクの実行時、システムは指定された JSON オブジェクトパス内の各フィールドを処理します。元の JSON フィールド名と値 (STRING 型) を使用し、それらをレコードに追加してから下流ノードに送信します。これにより、同期中に追加された構造変更や新しいフィールドが自動的に識別され、下流に渡されます。

    • フォーマットされた JSON データの取得。

      方法

      説明

      データサンプリングから JSON を取得

      データサンプリング後、[JSON 解析用の動的フィールドを追加] をクリックして [JSON 解析用の動的出力フィールド] ダイアログボックスを開きます。リストからソースフィールドを選択し、[JSON データ構造の取得] をクリックして JSON データ構造を取得します。

      image

      手動入力から JSON を取得

      データサンプリングを実行していない場合、またはソースデータが空の場合は、JSON を手動で指定できます。

      [JSON テキストの編集] ボタンをクリックして JSON コンテンツを入力し、次に [選択に戻る] をクリックしてフィールドを選択します。

      image

    • JSON オブジェクトの動的解析

      • 構成:

        image

      • 新しいフィールド c3dynamic オブジェクトに追加されたと仮定します。次の表は、解析結果を比較したものです:

        _value_(STRING)

        c1(STRING)

        c2(STRING)

        c3(STRING)

        {
            "dynamic": {
                "c1": 2,
                "c2": ["a1","b1"]
            }
        }

        2

        ["a1","b1"]

        未入力

        {
            "dynamic": {
                "c1": 2,
                "c2": ["a1","b1"],
                "c3": {"name": "jack"}
            }
        }

        2

        ["a1","b1"]

        {"name": "jack"}

    • フィールドの手動追加

      上流から値を取得できない場合や、サンプル JSON を提供していない場合は、動的フィールドの解析ルールを手動で定義できます。JSON オブジェクトへのパスを手動で編集して、ルールをカスタマイズします:

      パラメーター

      説明

      JSON オブジェクトの指定

      動的解析のための JSON オブジェクトへのパスを指定します。構文は次のとおりです:

      • $:ルートノードを表します。

      • .:子ノードを表します。

      • []:[number] は配列インデックスを指定します。インデックスは 0 から始まります。

      注:パス内の JSON フィールド名には、英数字、ハイフン (-)、アンダースコア (_) のみを使用できます。

      デフォルト値

      JSON パスが解決できない場合や、対応するオブジェクトが存在しない場合の動作を指定します。

      • 無視:動的解析は実行されません。

      • ダーティデータ:レコードは同期タスクのダーティデータとしてカウントされます。ダーティデータの許容設定によっては、タスクが停止する場合があります。

    • 重複するフィールド名の処理ポリシー。

      動的 JSON オブジェクトが展開されるとき、第 1 レベルのキーと値のペアのみが処理されます。このポリシーは、展開されたフィールドが既存のフィールドと同じ名前を持つ場合に、競合をどのように処理するかを決定します。ポリシーは次のとおりです:

      • 上書き:新しく展開されたフィールドの値が、既存のフィールドの値を置き換えます。

      • 破棄:既存のフィールドの値が保持され、新しく展開されたフィールドの値は破棄されます。

      • エラー:タスクは停止し、エラーを報告します。

次のステップ

[ソース] ノードと [JSON 解析] ノードを構成した後、[シミュレーション実行] をクリックして現在のノードからの出力データをプレビューし、要件を満たしていることを確認します。