跳到主要內容

JSON、XML匯出/匯入範例

本文是因應 data.gov.tw 政府資料開放平台今年目標是能納入各機關上架資料時的資料檢核,以及可以將表格式資料匯出成 JSON or XML 方便程式使用,因此先列出初步的標準。

這邊的匯入資料無法通過,不代表資料不乾淨,只是代表沒有被規則納入而已。

XML

  • [A] 檢查 XML 是否為合法 XML

    • 不合法,到 [Z]
    • 合法,到 [B]
  • [B] 檢查開頭是否有「<?mso-application progid=“Excel.Sheet”」

    • 有,當作 Excel 處理,到 [X]
    • 沒有,到 [C]
  • [C] 檢查 root tag 是否為 KML

    • 是的話,進到 [W]
    • 不是的話,到 [D]
  • [D] 從 root tag 出發往 children 掃,掃到 childNodes 數量不等於一後停止

    • 如果 childNodes 全部的 tag name 都一樣,就進到 [E]
    • 如果 tag name 有不同,就進到 [V]
  • [E] 再檢查下一層的 childNodes ,如果數量都相同並且都是只有一層,並且 tag name 也相同,就視為表格型資料的 XML

    • 符合,到 [S]
    • 不符合,到 [V]
  • [S] 符合表格型資料,標記起來, nodeName 可以是欄位名

  • [V] 無法判斷的 XML ,結束處理

  • [W] 進到 KML 處理流程

  • [X] 進到 excel 處理流程,不當作 XML 處理

  • [Z] 標示為不合法 XML,需要警告

json

  • [A] 檢查是否為合法 JSON

    • 不是合法 JSON ,到 [Z]
    • 是合法 JSON ,到 [B]
  • [B] 看最外層的格式

    • 是 array ,到 [C]
    • 是 object ,到 [D]
    • 其他,到 [Y]
  • [C] 檢查 array 內的每一個 element

    • 全部都是 array ,到 [E]
    • 全部都是 object ,到 [F]
    • 其他,到 [X]
  • [D] 檢查是否有 type 這個 properties

    • 沒有,進到 [X]
    • 有,是 FeatureCollection(GeoJSON) ,進到 [V]
  • [E] 檢查 array 內是否每個元素都是非 array, object 的值

    • 是,進到 [S]
    • 不是,進到 [X]
  • [F] 檢查是否每個 object 的 properties 的集合都相同,並且 value 都是非 array, object

    • 是,進到 [T]
    • 不是,進到 [V]
  • [S] 是二維陣列並且矩形的 array JSON ,可以匯出成 CSV

  • [T] 是 properties 都相同的 array JSON ,可以匯出成 CSV

  • [V] 確定是 GeoJSON ,也可以支援匯出 CSV

  • [X] 標示為不認得的 JSON 格式

  • [Y] 標示為不認得的最外層 JSON 格式,可能需要警告

  • [Z] 標示為不合法 JSON ,需要警告

匯出

這邊匯出只針對已經確定「可匯出成CSV」的資料,這個範圍只有在原始資料的格式已經是表格性質的格式

XML

<dataset>
    <row>
    <col1>value1-1</col1><col2>value1-2</col2>
    </row>
    <row>
    <col1>value2-1</col1><col2>value2-2</col2>
    </row>
</dataset>

JSON

  • [{“col1”:“value1-1”, “col2”:“value1-2”}, {“col1”:“value1-2”,“col2”:“value2-2”}]
分類: 
資料品質提升機制說明文件