JSON解析算子功能說明

  • 文檔創建者:Wendy123456
  • 編輯次數:23
  • 最近更新:Nikozhan 于 2025-10-13
  • 1. 概述

    1.1 版本

    FineDataLink 版本功能變動
    3.5.1「資料轉換」節點新增算子「JSON 解析」;支援將 JSON 結構的資料匯出為行列格式
    4.1.1將 API body 的回應欄位名稱從 default 改為 responseBody
    4.1.6.2
    • 支援同時解析一個JSON源欄位的陣列部分和非陣列部分

    • 所有生成JsonPath預設從根節點開始,生成完整的絕對路徑,使用者可手動修改

    • 在「選擇JSON節點」時,使用者可以透過貼上JSON正文的方式修改選擇節點的內容,以防止出現上游有多行 JSON 正文流進時,因為第一欄的JSON屬性較少,導致其他json屬性無法直接選擇的情況

    • JSON解析生成同名欄位進行提示

    • JSON解析支援同時解析多個欄位,減少「簡道雲輸入」多個複雜欄位的解析成本,在「JSON解析」中新增解析多個欄位的能力。

    4.1.13.3JSON 解析遇到控制字元時不報錯,解析後就按照分離字元進行解析
    4.2.10.1
    • 原「解析後保留所有匯出欄位」改名為「保留上游匯出欄位」,且支援自訂勾選需要保留的上游匯出欄位

    • 解析JSON資料中,支援配置匯出欄位類型

    1.2 應用場景

    透過 API 取數,或者從一些非關係型、關係型資料庫裏讀取資料時,存在取到的資料包含 JSON 格式資料的情況。

    而且許多情況下,JSON 格式的資料並不標準,並不能直接映射成二維表資料使用。

    「JSON 解析」算子可以解析 JSON 結構的資料,匯出行列格式的資料。

    1.3 功能簡介

    「JSON 解析」算子透過獲取上游匯出的 JSON 資料,將其自訂解析成需要的欄位並匯出給下游。

    範例:

    例如某列 JSON 為:

    [ { "category""reference""author""Nigel Rees""title""Sayings of the Century""price"8.95 }, { "category""fiction""author""Evelyn Waugh""title""Sword of Honour""price"12.99 }, { "category""fiction""author""Herman Melville""title""Moby Dick""price"8.99"isbn""0-553-21311-3" }, { "category""fiction""author""J.R.R. Tolkien""title""The Lord of the Rings""price"22.99"isbn""0-395-19323-5" }]

    「JSON 解析」算子解析後,為:

    1690770673461702.png

    注:JSON 解析時,不支援同時提取不同層級的欄位並擴展,使用者可以使用多個 JSON 解析算子進行多個層級的解析,詳情參見本文 3.4 節。

    2. 功能說明

    「JSON 解析」算子配置介面如下圖所示:

    23.png

    2.1 選擇源欄位

    在下拉框中選擇待解析的欄位。

    4.1.6.2 及之後版本,JSON解析支援同時解析多個欄位,減少「簡道雲輸入」多個複雜欄位的解析成本,在「JSON解析」中新增解析多個欄位的能力。

    在源欄位選擇多個欄位後,即可在「選擇JSON節點」中同時解析多個欄位,如下圖所示:

    如果上游為「API 輸入」算子,一般預設選擇  responseBody。如下圖所示:

    若上游為「DB表輸入」或者其他輸入算子,則可以選擇需要解析的 JSON 來源欄位。如下圖所示:

    2.2 保留上游匯出欄位

    4.2.10.1 及之後版本,原「解析後保留所有匯出欄位」改名為「保留上游匯出欄位」,且支援自訂勾選需要保留的上游匯出欄位。

    • 未勾選該按鈕:只保留所選源欄位解析後的資料;

    • 勾選該按鈕:保留上游所有的匯出欄位+所選源欄位解析後的資料;

    • 勾選該按鈕並設定「選部分」欄位:保留所選上游匯出欄位+所選源欄位解析後的資料;

    27.png

    以 JSON解析算子典型範例 文檔中的範例為例:

    27.png

    2.3 解析 JSON 資料

    選擇 JSON 節點,即可解析:

    所有生成JsonPath預設從根節點開始,生成完整的絕對路徑,使用者可手動修改。

    注1:json 解析的時候建議選擇最開始的節點,此時為絕對路徑下的解析,否則直接勾選指定欄位,使用相對路徑解析,資料解析結果可能會有錯誤。

    注2:可使用多個「JSON解析」算子解析「嵌套JSON」資料。

    支援修改欄位名稱、新增欄位等操作。如下圖所示:

    4.2.10.1 及之後版本,支援配置欄位類型,將以指定的欄位類型讀取資料,可選類型為:varchar、int、long、float、double、timestamp、boolean、date。

    3. 不同場景中JSON解析說明

    3.1 解析全量欄位資料

    在「選擇JSON節點」時,使用者可以透過貼上JSON正文的方式修改選擇節點的內容,以防止出現上游有多行 JSON 正文流進時,因為第一欄的JSON屬性較少,導致其他json屬性無法直接選擇的情況。

    例如,若選擇節點處缺少需要選擇的 JSON 屬性,則可以手動貼上包含需要選擇的 JSON 屬性正文,如下圖所示:

    然後即可在節點中選擇想要解析的欄位。

    3.2 解析不同層級的欄位

    範例:

    4.1.6.2 及之後版本,支援同時解析一個 JSON 源欄位的陣列部分和非陣列部分。

    例如想要解析在不同層級中的 class 和 name 欄位,則可直接選擇對應的欄位,即可同時解析一個資料源的陣列和非陣列部分,如下圖所示:

    4.1.6.2 之前的版本則無法直接同時解析一個JSON源欄位的陣列部分和非陣列部分。

    使用「JSON解析」算子解析子表單資料時,希望解析出在不同層級中的 level 和 name 欄位,如下圖所示解析時,將報錯:

    json 解析結果行數不匹配

    原因是暫不支援:JSON 解析時,同時提取不同層級的欄位並擴展。

    解決方案:

    可分兩次進行解析,先解析出同層級的 level 和 department 欄位,第二次解析出 department 下的 name 欄位。

    3.3 JSON 資料有多層級且不同層級存在同名欄位

    4.1.6.2 及之後版本,當 JSON 資料存在多層且有同名欄位時,會自動給重名欄位增加後綴,如下圖所示:

    3.4 多個 JSON 解析算子解析不同欄位但解析後的欄位同名

    範例:

    注:4.1.6.2 及之後版本不會出現此問題。

    使用兩個「JSON解析」算子,分別解析兩個不同欄位。但「選擇JSON節點」時,兩個「JSON解析」算子選擇的欄位名相同,都為 name 。如下圖所示:

    24.png

    此場景下,若有多個「JSON解析」算子,解析後欄位名稱不能相同,需要修改解析後欄位名稱。否則,後面的同名欄位會改寫前面的同名欄位。如下圖所示:

    25.png

    4. 應用範例

    附件列表


    主題: 資料開發-定時任務
    • 有幫助
    • 沒幫助
    • 只是瀏覽
    • 评价文档,奖励 1 ~ 100 随机 F 豆!