C# 解析複雜的Json檔案

來源:互聯網
上載者:User

標籤:tag   src   source   軟體   開啟   ges   gpo   GridView   type   

我們都是世上多餘的人,但至少我們對於彼此都是世界最重要的人。

Json 百度百科上這樣說:

JSON(JavaScript Object Notation, JS 對象標記) 是一種輕量級的資料交換格式。

它基於 ECMAScript (w3c制定的js規範)的一個子集,採用完全獨立於程式設計語言的文字格式設定來儲存和表示資料。

簡潔和清晰的階層使得 JSON 成為理想的資料交換語言。 易於人閱讀和編寫,同時也易於機器解析和產生,並有效地提升網路傳輸效率。

照我看來,它有兩種形式,

一 :  它是一種資料轉送通道  二 : 它有時候可以直接作為資料來源

因此如何讀取,解析它 是我們作為軟體開發人員,必須要掌握的技能!!!

我這裡的案例是Json字串作為項目的資料來源,我的工作是把它解析出來,封裝成 dataSet 供表單作顯示用。

首先第一步 : 開啟Json檔案,先沉下心來看半個小時,如果沒看懂。那就再看半小時,直到清楚它的結構為止。

第二步 : 也是很關鍵的一步,建立實體類  網上有自動轉換的工具,訪問這個網址:https://www.bejson.com/convert/json2csharp/ 把你的json 粘貼複製到上面即可 它會自動轉換成你想要的。

這就是我的實體類 結構不算很複雜 

第三步 : 執行個體好了實體類對象 就可以轉換了 C#提供了很多操作Json 的工具類 

我用的是 JsonConvenrt類下面的DeserializeObject<T>(string value)方法

具體格式為

對象 = JsonConvenrt.DeserializeObject<對象>(Json字串);

如果對象的結構和你的Json 結構一致 一般是不會報什麼錯的~~ 

第四步 : 下面就是把實體類轉換成DataSet對象了

代碼如下:  可直接套用

DataSet ds  = new DataSet();

DataTable dt = new DataTable();

DataColumn dname= new DataColumn(”名字",typeof(string));

dname.maxLength = 20;  //次列的最大長度 此屬性可有可無

dt.Columns.add(dname);

 

DataColumn dAge = new DataColumn("年齡"mtypeof(string));

dAge.maxLength = 20;

dt.Columns.add(dAge);

 

DataColumn dSex = new DataColumn("性別",typrof(int));

dSex.maxLebgth = 20;

dt.Columns.add(dSex);

 

foreach(Student stu in List<Student>){    //這就是實體類嘍

DataRow dr = new DataRow();

dr["年齡"] = stu.age;

dr["名字"] = stu.name;

dr["性別"] = stu.sex;

dt.Rows.add(dr);

}

ds.Tables.add(dt);

 

最後一步 : 就是綁定datagridview

this.datagridview.DataSource = ds.Table[0];

大功告成 其實很簡單 主要就是不要慌 慢慢來

在這裡 我說說我遇到的Bug

就是在第三步轉換實體類的時候,會報這個錯:

意思是 : 錯誤的轉換 在Json裡某一個屬性的值 是string 可自動產生時變成了 int 。 類型錯誤。不要怕麻煩,找到類型不符的,一一改回來就可以了。

 

C# 解析複雜的Json檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.