全部產品
Search
文件中心

DataWorks:JSON解析

更新時間:Sep 29, 2025

DataWorksData Integration即時ETL支援JSON解析組件使用,可以在來源與去向組件間新增JSON解析組件,對來源側的JSON資料解析成相應的表資料。

建立並配置JSON解析組件

步驟一:配置Data Integration任務

  1. 建立資料來源,詳情請參見:資料來源管理

  2. 建立Data Integration任務,詳情請參見:Data Integration側即時同步任務配置

    說明

    當Data Integration側同步任務的同步類型為單表即時,可在資料來源組件與資料去向組件之間新增資料處理組件。詳情可參見支援的資料來源及同步方案

步驟二:添加JSON解析組件

  1. 在即時ETL任務編輯頁DAG畫布中,單擊來源去向組件之間的image按鈕,新增選擇JSON解析組件。image

  2. 配置JSON解析組件。

    重要

    擷取JSON資料結構需在源端Kafka組件中完成資料採樣

    增加JSON解析固定欄位

    • 擷取JSON格式化資料。

      擷取JSON

      說明

      圖示

      擷取資料採樣的JSON

      資料採樣後,單擊增加JSON解析固定欄位開啟JSON解析固定欄位彈窗,通過選擇來源欄位後,單擊擷取JSON資料結構後擷取JSON資料結構。

      image

      擷取手動輸入的JSON

      若未進行資料採樣或源端資料為空白時,可以選擇手動編輯欄位:

      單擊增加JSON解析固定欄位開啟JSON解析固定欄位彈窗,單擊JSON文本編輯按鈕,在彈出的JSON文本編輯彈窗內手動輸入JSON內容,單擊確定來格式化上傳的JSON內容。

      image

      解析葉子節點

      • 在格式化展示JSON資料結構中單擊image選擇葉子欄位,會自動在固定輸出欄位中添加一條對應的解析配置。image

      • JSON解析葉子節點產生表格樣本。

      解析JSON對象

      在格式化展示JSON資料結構中選擇要解析的目標欄位,選擇JSON對象時,會出現彈窗,可選擇如下解析方式:

      • 添加json object內每一個key-value為單獨欄位,其中key為欄位名,賦值為其對應的value。

      • 添加json object整體為一個欄位,取值為對象的json string。

      • 選項

        圖示操作

        解析效果展示

        以圖示操作中的JSON為例,單擊address欄位後的image按鈕,在彈窗內選擇添加json object內每一個key-value為單獨欄位,其中key為欄位名,賦值為其對應的value

        則會解析出三個欄位:streetcityzip,分別賦值於這三個欄位值

        image

        image

        以圖示操作中的JSON為例,單擊address欄位後的image按鈕,在彈窗內選擇添加json object整體為一個欄位,取值為對象的json string

        會將整個address解析成為一個完整的一條資料,賦值內容包含了streetcityzip三個欄位。

        image

        image

      解析JSON數組

      在格式化展示JSON資料結構中選擇要解析的目標欄位,選擇JSON數組時,會出現彈窗,可選擇如下解析方式:

      • 添加數組為多行輸出。

      • 添加數組整體為一個欄位,取值為數組的 JSON string。

      選項

      圖示操作

      解析效果展示

      以圖示操作中的JSON為例,單擊array1和array2欄位後的image按鈕,選擇在彈窗內選擇添加數組為多行輸出

      說明

      如果數組內還是key:value對,且value還是一個數組,這塊不會解析到value中的數組值。

      image

      image

      以圖示操作中的JSON為例,單擊array欄位後的image按鈕,選擇添加數組整體為一個欄位,取值為數組的json string

      image

      image

    • 手動新增欄位,當無法順利擷取上遊欄位取值時,也沒有通過單擊JSON文本編輯按鈕手動上傳欄位JSON內容情況下手動定義固定欄位解析規則,通過手動編輯取值內容的方式,來擷取JSON內容,手動新增的詳細參數如下:

      參數

      說明

      欄位名

      解析得到的新欄位在下遊節點的引用名。

      取值

      用來指定JSON解析路徑,解析文法如下:

      • $:表示根節點。

      • . :表示子節點。

      • [][number]表示數組下標,從0開始。

      • [*]:展開數組多行輸出,每個元素與記錄其他欄位組裝成獨立一行記錄往下遊節點輸出。

      說明

      JSON解析路徑中的JSON欄位名只允許字母、數字、中劃線“-”和底線“_”。

      預設值

      當上遊表欄位發生變化導致JSON取值路徑不存在時的預設值。

      • NULL:欄位賦值為NULL。

      • 不填充:欄位不填充任何值,與選擇NULL效果的區別在於寫入目標表對應欄位時,如果目標欄位配置了預設值,則會使用這個預設值,而不是NULL。

      • 髒資料:計入同步任務髒資料統計並根據髒資料容忍配置決定是否異常退出。

      • 手動輸入常量:使用手動輸入常量作為欄位賦值。

      image

    增加JSON解析動態欄位

    • 擷取JSON格式化資料。

      擷取JSON

      說明

      圖示

      擷取資料採樣的JSON

      資料採樣後,單擊增加JSON解析動態欄位開啟JSON解析動態輸出欄位彈窗,通過選擇來源欄位後,單擊擷取JSON資料結構後擷取JSON資料結構。

      image

      擷取手動輸入的JSON

      單擊增加JSON解析動態欄位開啟JSON解析動態輸出欄位彈窗,由於無法順利擷取到上遊欄位取值,或擷取到的欄位取值不符合JSON規範,則需要單擊JSON文本編輯按鈕,在彈出的JSON文本編輯彈窗內手動輸入JSON內容,單擊確定來格式化上傳的JSON內容。

      image

    • 動態解析JSON對象

      • 在格式化展示的JSON內容中選擇要做動態解析的目標JSON對象欄位,系統會自動在固定輸出欄位中添加JSON對象下每個欄位的解析配置。

      • 設定動態解析JSON對象,在同步任務實際運行中,會將每條指定路徑下的JSON對象的每個欄位,以原JSON欄位名和欄位值用STRING類型添加到記錄中往下遊節點輸出,這樣在同步運行過程中,當指定的JSON對象結構發生了變化或新增欄位時,也能自動識別並向下遊輸出。

      • 詳情可參考下圖:

        解析對象變化前

        image

        解析對象變化後

        image

      • 解析效果展示。

        _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解析路徑解析失敗,或者對應欄位不存在時的預設行為。

      • 忽略:不做動態解析。

      • 髒資料:計入同步任務髒資料統計並根據髒資料容忍配置決定任務是否異常退出。

    • 發現與已有欄位重名時策略。

      JSON動態欄位按照key-value做展開時,只展開第一層,如果後展開的欄位發現已有同名欄位時需要採取的策略。策略詳情如下:

      • 覆蓋:以後展開的value取代已有欄位value。

      • 丟棄:保持已有欄位的value,丟棄後展開的value。

      • 報錯:任務報錯,停止運行。

後續操作

完成來源資訊JSON解析以及去向資訊的配置後,可單擊右上方的類比運行,對Data Integration任務進行類比運行,以便查看輸出資料結果,是否符合您的需求。