18. (番外篇) 五分鐘實作C# 介接OpenData(政府行政機關辦公 ...

文章推薦指數: 80 %
投票人數:10人

今天主要講的是快速介接 政府資料開放平臺 上的 政府行政機關辦公日曆表 ... var url = "http://data.ntpc.gov.tw/api/v1/rest/datastore/382000000A-000077-002"; ... 2018iT邦幫忙鐵人賽 DAY 18 0 自我挑戰組 半路出家的工程師重新認識JavaScript系列第 18篇 18.(番外篇)五分鐘實作C#介接OpenData(政府行政機關辦公日曆表) 2018鐵人賽 awws 團隊2018新年快樂 2018-01-0521:06:099370瀏覽 前言 今天主要講的是快速介接政府資料開放平臺上的政府行政機關辦公日曆表 緣由是最近實作一個小型的工作行事曆 主要是讓客戶可以送件時,可以計算交件期限 邏輯蠻簡單的,從送件日根據案件等級往後推N個工作天即是 所以我們需要幾個資訊 送件日期 案件等級 判別工作日與例假日 工作日與例假日的部分,希望每年都可以匯入人事行政處公布的辦公日曆表 之後若遇颱風或其他不可抗拒因素彈性放假時,也要有地方可以手動調整 那我們就開始先接資料吧 先找到資料來源 先到政府行政機關辦公日曆表點選JSON檢視資料 複製資料網址 將網址貼到Chrome上就可以看到要接收的資料了 發送Httprequest&接收response 我們要先建立一個WebRequest varurl="http://data.ntpc.gov.tw/api/v1/rest/datastore/382000000A-000077-002"; varrequest=WebRequest.Create(url); //透過Chrome開發者工具可以取得Method,ContentType request.Method="GET"; request.ContentType="application/json;charset=UTF-8"; 取得request的responsestream varresponse=request.GetResponse()asHttpWebResponse; varresponseStream=response.GetResponseStream(); varreader=newStreamReader(responseStreaEncoding.GetEncoding("utf-8")); varsrcString=reader.ReadToEnd(); srcString就是我們要的資料了 建立JSON格式對應的class 感謝Visualstudio提供強大的貼上JSON做為類別功能 先複製在Chrome貼上資料來源後,畫面中的JSON資料 建立一個class 編輯(E)=>選擇性貼上(S)=>貼上JSON做為類別(J) 將剛剛的responsestring轉為class吧 我利用Newtonsoft提供的轉型方法 varjsonData=Newtonsoft.Json.JsonConvert.DeserializeObject(srcString); 整段code看起來就會是 staticvoidMain(string[]args) { varurl="http://data.ntpc.gov.tw/api/v1/rest/datastore/382000000A-000077-002"; varrequest=WebRequest.Create(url); varresponse=request.GetResponse()asHttpWebResponse; varresponseStream=response.GetResponseStream(); varreader=newStreamReader(responseStream,Encoding.GetEncoding("utf-8")); varsrcString=reader.ReadToEnd(); varjsonData=Newtonsoft.Json.JsonConvert .DeserializeObject(srcString); foreach(varholidayinjsonData.result.records) { Console.WriteLine($"Date:{holiday.date},IsHoliday:{holiday.isHoliday},Category:{holiday.holidayCategory}"); } Console.ReadKey(); } 運行結果如圖 結論 目前用簡單的方式先接資料 看之後要開thread或是採用asyncawait方式都可以 完整的程式碼在Github上https://github.com/ChiYunJai/Day18_OpenData 目前有個小缺點是她日期為string 看之後轉型成DateTime會比較方便處理 接著開一張資料表紀錄某年某月某天是否為工作日即可 匯入步驟也很簡單 先將openData取得所有IsHoliday="是"的日期匯入 剩下的都是為工作日匯入 提供介面讓使用者可以根據情況調整某天為工作日或例假日即可 最後在算交件期限時,用送件日期當query條件去找即可! 留言 追蹤 檢舉 上一篇 17.個人筆記之常複製的方法整理集 下一篇 19.SpeakingJavaScript-Math 系列文 半路出家的工程師重新認識JavaScript 共30篇 目錄 RSS系列文 訂閱系列文 21人訂閱 26 26.SpeakingJavaScript主控台API(待補) 27 27.待補 28 28.待補 29 29.待補 30 30.待補 完整目錄 尚未有邦友留言 立即登入留言 iT邦幫忙鐵人賽 參賽組數 1087組 團體組數 52組 累計文章數 20460篇 完賽人數 572人 鐵人賽最新文章 更新網格交易機器人 STM32的開發生態,Cube、HAL庫、LL庫 閒聊STM32CubeMX和STM32CubeIDE 建立第一個單元測試(golang)-1(Day20) Day38-在AWSLambda中使用YOLO推估(Inference) Day37-在AWSLambda建立OpenCVLayer Day36-使用Container建立AmazonSageMaker端點 Day35-AmazonSageMaker簡介 今天來瞄一眼龍與雀的科技:知覺共享技術Body-sharing 更新網格交易機器人 前往鐵人賽 技術推廣專區 [Day2]抓取每日收盤價 [Day1]基本工具安裝 利用python取得永豐銀行API的Nonce 永豐金融API測試員 [Day03]tinyML開發板介紹 [Day01]在享受tinyML這道美食之前 [Day3]使用ta-lib製作指標 計算API所需要的參數:HashID [Day4]函數打包與買進持有報酬率試算 計算API所需要的參數:IV 前往鐵人賽 熱門問題 請推薦台中IT委外廠商 css選擇器中的[]什麼意思,或怎麼解釋 test這是個測試 請教光纖跳接線的選擇 新手程式提問 請問這個錯在哪? [MVC][C#]連結中央氣象局天氣,並以氣溫判別顯示對應圖片 如何將SQL直行欄位加總完並放在指定欄位? 如果想把現有NAS掛給ESXI6當VM備份儲存區.請問要如何做 請問是否有人有使用過VisualStudioIDE?? IT邦幫忙 站方公告 2021iThome鐵人賽精彩文章超過2萬篇,預計12月揭曉本屆獲勝鐵人 熱門tag 看更多 13th鐵人賽 12th鐵人賽 11th鐵人賽 鐵人賽 2019鐵人賽 2018鐵人賽 javascript 2017鐵人賽 windows php python windowsserver linux c# 程式設計 資訊安全 css vue.js sql 分享 熱門回答 test這是個測試 請問這個錯在哪? 如果想把現有NAS掛給ESXI6當VM備份儲存區.請問要如何做 新手程式提問 急!傳值問題 Router靜態路由問題 請推薦台中IT委外廠商 [MVC][C#]連結中央氣象局天氣,並以氣溫判別顯示對應圖片 請問是否有人有使用過VisualStudioIDE?? htmljavascript值存入PHP 熱門文章 Day36-使用Container建立AmazonSageMaker端點 Day38-在AWSLambda中使用YOLO推估(Inference) 閒聊STM32CubeMX和STM32CubeIDE STM32的開發生態,Cube、HAL庫、LL庫 建立第一個單元測試(golang)-1(Day20) Day37-在AWSLambda建立OpenCVLayer Python演算法學習日誌Day13 iPhone無法正常關機?可以試試這4個方法 從PDF刪除水印的5種最佳方法 12個類似LibraryGenesis的網站可以下載免費的PDF電子書 一週點數排行 更多點數排行 海綿寶寶(antijava) raytracy(raytracy) ccenjor(ccenjor) rogeryao(rogeryao) Mao(TutelaryMao) Felix(redqi) bsexp301479(bsexp301479) Samuel(kuanyu) Homura(homura0731) juck30808(juck30808) × At 輸入對方的帳號或暱稱 Loading 找不到結果。

標記 {{result.label}} {{result.account}} 關閉



請為這篇文章評分?