搜尋此網誌

2022年9月22日 星期四

C# NewtonSoft.Json 解析 json 字串

緣起:


    突然想到,我的程式如果要處理那些 Facebook API 回傳的資訊的話,我必須要有方法能解析那些 json 的字串,所以今天在開始研究 API 前,我想先學會 C# 解析 json 的方法。



Newtonsoft.Json:


    這東西我在我們公司的專案裡也有看到,只要是解析 json 就是用它,沒有看到其它的方法 (也有可能是我眼殘),然後我去 google,大部份的教學都是用它,所以載它來用肯定沒錯。

    這個套件可以直接在 Visual Studio 上,用 Nuget 來安裝,Microsoft 的官方網站有很詳盡的教學,在專案管理視窗中,對自己的 project 點右鍵就能看到 Nuget 的選項。


    那個 Newtonsoft.Json 就直接在第一個項目了,連找都不用找 (看來它真的很熱門),載完後就能直接在程式裡引用了。


解析 Json:


    我看我公司在使用這個套件時,都是先建一個跟那個 json 相對應欄位的 class,再使用那個 class 去處理 json 的解析,網路上的教學也大多是這樣,可是我目前用到的 Facebook API 回傳的 json 格式就只有一層,只需簡單拿到某個第一層欄位的資料就行,為了那些回應而建 class 好像不值得,所以我後來找了不需用類別的方法

    首先,引入需要的套件


    然後這個是我用來測試的字串。


    用 Jvalue 的 Parse 方法來解析我們的字串,存到一個叫 json 的變數裡,這個變數是一個特別的 dynamic 類型。


    這東西的介紹在這,我把它理解成,在程式跑的時候才決定它的類型,而且隨時都能變化這樣。

    我們的 json 字串有 id 這個欄位,可以像下面的程式這樣存取它,即使你在打 json. 時,編輯器沒出現 id 這個建議,程式之後也不會報錯。


    不過如果存取不存在的欄位,它會有例外發生。看來,要保險使用的話,要弄個 try catch。我後來還有發現,那個 dynamic 可以換成 JToken,那個 Jvalue.Parse 回傳的是 Jtoken 類型,我們也可以用 Jtoken 的方法來取值,我在這邊有找到解答。


    程式這樣寫也能得到欄位的資料。


沒有留言:

張貼留言