C#利用json2csharp建立Json相對應類別,並運用Json.NET做反序列化

摘要:利用json2csharp建立Json相對應類別,並運用Json.NET做反序列化

json2csharp網站上已經有滿多前輩介紹過了,

小弟再此只是做個記事,如果有解釋不當或者是有誤的地方.

也請各位前輩多多指導

 

其實我們接觸JSON的資料機會算很頻繁,

如果一個JSON格式的資料是少的且內容不多

去建立相對應的Class那是還好.例如JSON格式如下:

{
"name":"toast",
  "age":"???",
"height":"141"
}

相對應的C# Class為

public string name { get; set; }
 public string age { get; set; }
 public string height { get; set; }

 

看起來這格式並不複雜,在建立相對應的Class到很快

但如果是有json array又有json object

那建立起來不就是件苦差式...好吧!我得承認我做過...囧

還好有佛心來著的網站透過他,將json字串貼上,就可以幫我們轉換成相對應的Class

接下來就透過 http://openweathermap.org/api

該天氣網站提供的免費API來當做測試嚕

我們先前往此網址

http://api.openweathermap.org/data/2.5/weather?q=taipei

將下列JSON格式複製下來

{
coord: {
lon: 121.53,
lat: 25.05
},
sys: {
message: 0.014,
country: "TW",
sunrise: 1434229415,
sunset: 1434278679
},
weather: [
{
id: 800,
main: "Clear",
description: "Sky is Clear",
icon: "01d"
}
],
base: "stations",
main: {
temp: 301.75,
temp_min: 301.75,
temp_max: 301.75,
pressure: 1014.31,
sea_level: 1022.75,
grnd_level: 1014.31,
humidity: 89
},
wind: {
speed: 2.76,
deg: 144.5
},
clouds: {
all: 0
},
dt: 1434274336,
id: 1668341,
name: "Taipei",
cod: 200
}

貼到json2csharp

如下圖

上方第一個紅框是所輸入的JSON格式,

按下Generate下方的框

就會產生相對的C#Class

接下來我們就來寫程式測試一下嚕

如上圖將剛剛在json2csharp所產生的對應class複製起來

在此我是建立一個Model的資料夾,將對應的Class置入於此

並貼上自己定義的命名空間內!

 

接下來新增一個方法

利用JSON.NET所提供的 JsonConvert.DeserializeObject方法

將接收回來的JSON資料做反序列化

如下圖

 

這時候當然就先測試一下,JSON資料是否可以真的反序列化嚕

先看一下接回來的JSON資料

 

資料確實有接回來了,在看看是否有將資料做反序列化的動作

 

JSON資料確實是已經反序列化,

這代表著我們能透過標點法取值,

對於List物件也能透過LINQ來做篩選

這時候就可以拉幾個Label標籤跟Gridview來測試一下了~

將反序列化的值逐一擺入UI內

 

結果

 

最後附上原始碼

請點我

 

參考連結