[筆記] 利用 C# 存取 Github API 遇上的困難

最近在寫一個需要存取 Github API 來獲取 Repo 和 Repo 裏面的檔案的小工具 (SharpHelper) ,但是在處理 JSON 字串時傻眼了,現在跟大家分享一下 + 做筆記吧。

在 Github API 中,我們可以使用

來獲取 JSON 格式的字串,回傳的內容是 Repo 某一個檔案/資料夾的 Commit 訊息

為了在 C# 上方便處理 JSON 格式的字串,我就使用了 Newtonsoft.Json 函式庫~

(題外話 : 這個函式庫比 .NET 內建的 JavaScriptSerializer 效率高很多)

 

然後就去 Json2CSharp 把 JSON 字串轉換成 C# 的類別

JSON 字串 :

轉換後的 C# 類別 :

這裡我就覺得奇怪了 : 為什麼 RootObject 不是一個陣列? JSON 字串裏面明明就有2個Commit資訊的陣列啊……

於是我就試試在 C# 上 Deserialize 那個 JSON,結果當然是拋出例外…

記得在幾年前學 JSON 的時候,陣列不能在最外層的啊,於是我就把 RootObject 那個陣列包在一個自建的 Object 裏面 :

然後生成 C# 類別 :

這時 RootObject 裏面已經變成了一個 GithubCommit 類型的 List 了~

Deserialize 也不會再出現錯誤咯~

在這裡我就寫了一個函式能幫我自動添加語法 :

完成~