Json gelen datayı nasıl class'lara aktarırız?




Merhaba arkadaşlar bu makalemde JSON Bir Data'dan Class yapısına döndürmeyi göstereceğim. Senaryo: Open Weather Map sitesinde bir il için Hava Durumu datasını çekiyoruz. Bu dönüş json formatındadır. Bu Json datasını Class'a döndürüp hava sıcaklığını almak istiyorum.
Sakarya ili için JSON: http://api.openweathermap.org/data/2.5/weather?q=sakarya,tr&lang=tr
q="İL adı"
lang="dil" dil değerini vermezseniz ingilizce dönüş yapar.
Linki string olarak indiriyoruz.
WebClient Client = new WebClient();
string jsonString = Client.DownloadString("http://api.openweathermap.org/data/2.5/weather?q=sakarya,tr&lang=tr");
Sonra şu linkteki http://json2csharp.com/ adrese gidiyoruz ve bize gelen json string'i kopyalayıp sitede bulunan text kutusuna yapıştırıp bizim için oluşturduğu class'ları laps diye uğraşmadan alıyoruz :D
JavaScriptSerializer Sınıfı Deserialize metoduyla json data mızı Üstte oluşan RootObject isimli Class'ımıza aktarıyoruz.
JavaScriptSerializer js = new JavaScriptSerializer();
RootObject RO = js.Deserialize<RootObject>(jsonString);
Aktarma işlemi yaptıktan sonra Artık dereceyi alabiliriz.
Derece Kelvin cinsindendir bu yüzden 273.15d çıkarıyoruz ve Santigrat'ı elde ediyoruz.
Response.Write(RO.main.temp - 273.15d); //18,9 C
Response.Write(RO.weather.FirstOrDefault().description); //az bulutlu
Hava durumunun resmini almak istersek
ltrIMage.Text = "<img src='http://openweathermap.org/img/w/"+RO.weather.FirstOrDefault().icon+".png'/>";
Örnek Link: http://openweathermap.org/img/w/02n.png
http://json2csharp.com/ sitesinde dönüştürdüğümüz json datasının class'ları aşağıdaki gibidir.
public class RootObject
{
public Coord coord { get; set; }
public List weather { get; set; }
public string @base { get; set; }
public Main main { get; set; }
public Wind wind { get; set; }
public Clouds clouds { get; set; }
public int dt { get; set; }
public Sys sys { get; set; }
public int id { get; set; }
public string name { get; set; }
public int cod { get; set; }
} public class Coord
{
public double lon { get; set; }
public double lat { get; set; }
}

public class Weather
{
public int id { get; set; }
public string main { get; set; }
public string description { get; set; }
public string icon { get; set; }
}

public class Main
{
public double temp { get; set; }
public double pressure { get; set; }
public int humidity { get; set; }
public double temp_min { get; set; }
public double temp_max { get; set; }
public double sea_level { get; set; }
public double grnd_level { get; set; }
}

public class Wind
{
public double speed { get; set; }
public double deg { get; set; }
}

public class Clouds
{
public int all { get; set; }
}

public class Sys
{
public double message { get; set; }
public string country { get; set; }
public int sunrise { get; set; }
public int sunset { get; set; }
}


Kaynak : http://www.kodstrap.com/makale/json-gelen-datayi-nasil-classlara-aktaririz/8056
İyi Kodlar!

Yorumlar