DataWorksData Integration單表即時支援使用JSON解析組件,對來源側的JSON資料解析成相應的表資料。
建立並配置JSON解析組件
步驟一:配置Data Integration任務
建立資料來源,詳情請參見:資料來源管理。
建立Data Integration任務,詳情請參見:單表即時同步任務配置。
說明當Data Integration側同步任務的同步類型為單表即時,可在資料來源組件與資料去向組件之間新增資料處理組件。詳情可參見支援的資料來源及同步方案。
步驟二:添加JSON解析組件
在單表即時同步任務中,開啟資料處理開關,單擊+添加節點,新增選擇JSON解析組件。
為節點配置名稱和描述資訊,並配置JSON解析組件。
重要擷取JSON資料結構需在資料來源(如Kafka)中完成資料採樣。
增加JSON解析固定欄位
擷取JSON格式化資料。
擷取JSON
說明
圖示
擷取資料採樣的JSON
資料採樣後,單擊增加JSON解析固定欄位開啟JSON解析固定欄位彈窗,通過選擇來源欄位後,單擊擷取JSON資料結構以擷取JSON資料結構。

擷取手動輸入的JSON
若未進行資料採樣或源端資料為空白時,可以選擇手動編輯欄位:
單擊JSON文本編輯按鈕,開啟編輯模式,在JSON文本編輯視窗內手動輸入JSON內容後,單擊返回選取,來選擇欄位。

手動新增欄位,當無法順利擷取上遊欄位取值時,也沒有通過單擊JSON文本編輯按鈕手動上傳欄位JSON內容情況下手動定義固定欄位解析規則,通過手動編輯取值內容的方式,來擷取JSON內容,手動新增的詳細參數如下:
參數
說明
欄位名
解析得到的新欄位在下遊節點的引用名。
取值
用來指定JSON解析路徑,解析文法如下:
$:表示根節點。.:表示子節點。[]:[number]表示數組下標,從0開始。[*]:展開數組多行輸出,每個元素與記錄其他欄位組裝成獨立一行記錄往下遊節點輸出。
說明JSON解析路徑中的JSON欄位名只允許字母、數字、中劃線“-”和底線“_”。
預設值
當上遊表欄位發生變化導致JSON取值路徑不存在時的預設值。
NULL:欄位賦值為NULL。
不填充:欄位不填充任何值,與選擇NULL效果的區別在於寫入目標表對應欄位時,如果目標欄位配置了預設值,則會使用這個預設值,而不是NULL。
髒資料:計入同步任務髒資料統計並根據髒資料容忍配置決定是否異常退出。
手動輸入常量:使用手動輸入常量作為欄位賦值。

增加JSON解析動態欄位
在格式化展示的JSON內容中選擇要做動態解析的目標JSON對象欄位,系統會自動在固定輸出欄位中添加JSON對象下每個欄位的解析配置。
設定動態解析JSON對象,在同步任務實際運行中,會將每條指定路徑下的JSON對象的每個欄位,以原JSON欄位名和欄位值用STRING類型添加到記錄中往下遊節點輸出,這樣在同步運行過程中,當指定的JSON對象結構發生了變化或新增欄位時,也能自動識別並向下遊輸出。
擷取JSON格式化資料。
擷取JSON
說明
圖示
擷取資料採樣的JSON
資料採樣後,單擊增加JSON解析動態欄位開啟JSON解析動態輸出欄位彈窗,通過選擇來源欄位後,單擊擷取JSON資料結構以擷取JSON資料結構。

擷取手動輸入的JSON
若未進行資料採樣或源端資料為空白時,可以選擇手動編輯欄位:
單擊JSON文本編輯按鈕,開啟編輯模式,在JSON文本編輯視窗內手動輸入JSON內容後,單擊返回選取,來選擇欄位。

動態解析JSON對象
配置方式:

假設dynamic的欄位新增c3,解析後結果對比展示如下:
_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解析的配置後,可單擊資料輸出預覽,以便查看當前節點的輸出資料結果,是否符合您的需求。






