<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          C#如何簡單快速的解析復(fù)雜的JSON格式接口數(shù)據(jù)

          共 1588字,需瀏覽 4分鐘

           ·

          2021-03-01 05:26

          一、 背景介紹

          之前有個(gè)碰到一個(gè)學(xué)員問阿笨老師,說他現(xiàn)在工作內(nèi)容是對外對接第三方API接口,但是文檔中有大量的接口是一大堆復(fù)雜的JSON格式的字符串(比如:有單個(gè)對象,有數(shù)組對象,還有多層嵌套對象等等,他說不會(huì)解析為C#對象,問能不能幫助一下他,教他一下以后如何碰到這類復(fù)雜的JSON格式都會(huì)進(jìn)行解析。俗話說的好:授人以魚不如授人以漁!希望這么一點(diǎn)小技能能夠幫助到有需要的同學(xué)哈。

          二、提出問題

          一般API接口都會(huì)有一個(gè)自己定義的標(biāo)準(zhǔn)的響應(yīng)的數(shù)據(jù)格式,比如這位同學(xué)對接的API接口數(shù)據(jù)格式說明(如下圖),從圖中我們可以看到code節(jié)點(diǎn)和message節(jié)點(diǎn)是固定響應(yīng)頭,唯一變化的是data節(jié)點(diǎn)。那么大家有沒有想到變化的類型在C#中我們可以用什么類型進(jìn)行替代呢?答案想必大家都知道,那就是泛型T。


          二、分析問題

          先來一個(gè)簡單一點(diǎn)的JSON格式:


          再來稍微一點(diǎn)復(fù)雜的JSON格式


          如果接口字段少一點(diǎn)的話,我們還可以JSON節(jié)點(diǎn)通過手動(dòng)進(jìn)行Mapping映射為C#實(shí)體對象屬性。那么如果接口字段比較多,數(shù)據(jù)類型比較復(fù)雜,而且層級嵌套比較深的話,有沒有簡單快速的方式進(jìn)行自動(dòng)化的方式自動(dòng)生成Mapping映射我們想要的C#實(shí)體對象呢?答案:是肯定的?。?!接下來阿笨將給大家推薦幾種方式,敬請拭目以待。

          三、解決問題

          1)、在線json生成C#實(shí)體工具類,這里阿笨推薦下面兩款

          http://www.jsons.cn/jsontomodel/

          http://www.bejson.com/convert/json2csharp

          使用方式很簡單,復(fù)制JSON格式字符串,直接點(diǎn)擊生成C#實(shí)體對象類。



          2)、VS2019自動(dòng)格式轉(zhuǎn)換。

          1、復(fù)制你要轉(zhuǎn)換的JSON格式字符串。(記住一定要先復(fù)制自己想要轉(zhuǎn)換的JSON格式字符串哦)

          2、打開VS2019(其他低版本VS版本阿笨沒測試,自己去試一下哦),找到【編輯】-【選擇性粘貼】-【將JSON粘貼為類】


          所有的工具都不是萬能的,轉(zhuǎn)換后的格式需要自己驗(yàn)證一下是否合理哦。不過大家放心,大部分的JSON類型的字符串類型都可以做到一鍵生成。哈哈,有點(diǎn)類似代碼生成器的感覺,太爽了。

          四、嘮叨了這么多,阿笨快來上干貨

          給大家寫了幾個(gè)示例DEMO,只要能夠掌握這幾個(gè)示例,以后解析任何復(fù)雜類型的JSON字符串都沒有障礙了。

          核心的一句話是:json字符串反序列化為C#對象,C#對象序列化為JSON字符串。

          示例一:簡單格式的JSO你字符串:



          示例二:稍微復(fù)雜一點(diǎn)的字符串




          示例三:Dictionary<string, object> 轉(zhuǎn)JSON字符串


          示例四:數(shù)組[] 轉(zhuǎn)JSON字符串

          示例五:集合轉(zhuǎn)JSON數(shù)組

          JSON代碼:

          {

          "ids":[1,2,3]

          }


          對應(yīng)的生成C#代碼

          public class OrderInfo

          {


              public List<int> ids { get; set; }

          }


          五、源代碼示例下載

          非常感謝對【跟著阿笨一起玩NET】的支持,有問題微信公眾號(hào)回復(fù)wx關(guān)鍵字,加阿笨的個(gè)人微信號(hào)。


          鏈接:https://pan.baidu.com/s/1R1TRR2c2c114b_FoniC7Rw

          提取碼:qfxt



          騰訊課堂



          網(wǎng)易云課堂



          瀏覽 29
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲天堂无码aV | 日韩免费成人电影 | 手机看片欧美一级黄片 | 天天撸视频 | 日韩又大又粗精品 |