一、背景介紹
之前有個碰到一個學員問阿笨老師,說他現在工作內容是對外對接第三方API接口,但是文檔中有大量的接口是一大堆復雜的JSON格式的字符串(比如:有單個對象,有數組對象,還有多層嵌套對象等等,他說不會解析為C#對象,問能不能幫助一下他,教他一下以后如何碰到這類復雜的JSON格式都會進行解析。俗話說的好:授人以魚不如授人以漁!希望這么一點小技能能夠幫助到有需要的同學哈。
二、提出問題
一般API接口都會有一個自己定義的標准的響應的數據格式,比如這位同學對接的API接口數據格式說明(如下圖),從圖中我們可以看到code節點和message節點是固定響應頭,唯一變化的是data節點。那么大家有沒有想到變化的類型在C#中我們可以用什么類型進行替代呢?答案想必大家都知道,那就是泛型T。
二、分析問題
先來一個簡單一點的JSON格式:
再來稍微一點復雜的JSON格式
如果接口字段少一點的話,我們還可以JSON節點通過手動進行Mapping映射為C#實體對象屬性。那么如果接口字段比較多,數據類型比較復雜,而且層級嵌套比較深的話,有沒有簡單快速的方式進行自動化的方式自動生成Mapping映射我們想要的C#實體對象呢?答案:是肯定的!!!接下來阿笨將給大家推薦幾種方式,敬請拭目以待。
三、解決問題
1)、在線json生成C#實體工具類,這里阿笨推薦下面兩款
http://www.jsons.cn/jsontomodel/
http://www.bejson.com/convert/json2csharp
使用方式很簡單,復制JSON格式字符串,直接點擊生成C#實體對象類。
2)、VS2019自動格式轉換。
1、復制你要轉換的JSON格式字符串。(記住一定要先復制自己想要轉換的JSON格式字符串哦)
2、打開VS2019(其他低版本VS版本阿笨沒測試,自己去試一下哦),找到【編輯】-【選擇性粘貼】-【將JSON粘貼為類】
所有的工具都不是萬能的,轉換后的格式需要自己驗證一下是否合理哦。不過大家放心,大部分的JSON類型的字符串類型都可以做到一鍵生成。哈哈,有點類似代碼生成器的感覺,太爽了。
四、嘮叨了這么多,阿笨快來上干貨
給大家寫了幾個示例DEMO,只要能夠掌握這幾個示例,以后解析任何復雜類型的JSON字符串都沒有障礙了。
核心的一句話是:json字符串反序列化為C#對象,C#對象序列化為JSON字符串。
示例一:簡單格式的JSO你字符串:
示例二:稍微復雜一點的字符串
示例三:Dictionary<string, object> 轉JSON字符串
示例四:數組[] 轉JSON字符串
示例五:集合轉JSON數組
五、源代碼示例下載
掃碼關注下方微信公眾號,回復n80c關鍵字獲取源代碼下載地址。
有問題微信公眾號回復wx關鍵字,加阿笨的個人微信號。