Windows Phone

Json.NET ile Kolay Yoldan JSON İşleme

Windows Phone uygulamalarında, bir servisten veri çekme ihtiyacı duyduğumuzda, bu veriyi alabilmek için karşımıza çıkan en yaygın format JSON olacaktır. Peki, JSON formatındaki veriyi uygulamamızda nasıl işleyip kullanabiliriz? Bu yazıda, bu sitedeki veriyi kullanacağız. Json verisini s...

Alper Cem Polat |

23.07.2014

Windows Phone uygulamalarında, bir servisten veri çekme ihtiyacı duyduğumuzda, bu veriyi alabilmek için karşımıza çıkan en yaygın format JSON olacaktır. Peki, JSON formatındaki veriyi uygulamamızda nasıl işleyip kullanabiliriz? Bu yazıda, bu sitedeki veriyi kullanacağız.

 

Json verisini saklamak

İlk aşamada yapmamız gereken, çekeceğimiz JSON verisini saklayabilecek bir sınıf yaratmak. json2csharp sitesi bunu bizim için yapıyor ve JSON cevabını göstermemize yardımcı olacak sınıfın C# kodunu bizim için üretiyor.

[code]public class Director
{
    public string name { get; set; }
    public string nameId { get; set; }
}

public class Writer
{
    public string name { get; set; }
    public string nameId { get; set; }
}

public class RootObject
{
    public List countries { get; set; }
    public List directors { get; set; }
    public List filmingLocations { get; set; }
    public List genres { get; set; }
    public string idIMDB { get; set; }
    public List languages { get; set; }
    public string metascore { get; set; }
    public string plot { get; set; }
    public string rated { get; set; }
    public string rating { get; set; }
    public string releaseDate { get; set; }
    public List runtime { get; set; }
    public string simplePlot { get; set; }
    public string title { get; set; }
    public string urlIMDB { get; set; }
    public string urlPoster { get; set; }
    public List writers { get; set; }
    public string year { get; set; }
}
[/code]

Bu kodu JsonData.cs isimli bir C# dosyasına kaydedip, ikinci aşamaya geçelim.

 

Json verisini kullanıcıya göstermek

Peki, bu JSON cevabını telefonumuzda nasıl saklayıp, kullanıcılara uygun formatta göstereceğiz? Bunun için aslında özelleşmiş bir string olan JSON cevabını telefona kaydetmemiz gerekiyor. Bu amaçla WebClient sınıfını kullanacağız.

[code]WebClient webClient = new WebClient();
webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted);
webClient.DownloadStringAsync(new Uri(http://www.myapifilms.com/search?title=Airplane!&format=JSON)); [/code]

String olarak tuttuğumuz JSON verisinin telefonumuza indirilmesi tamamlandığında, webClient_DownloadStringCompleted event'i çağrılıyor ve bu String'i dönüştürüp uygun formatta gösteriyoruz:

[code]void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
 {
 var rootObject = JsonConvert.DeserializeObject(e.Result);
 foreach (var data in rootObject)
 {
 //artık bu data objesini kullanarak istediğimiz özelliğe erişebiliriz.
 //Örneğin filmin titleını ekrana yazdıralım.
 MessageBox.Show(data.title);
 }
 }[/code]

 

Son aşama

İkinci aşamada gördüğümüz JsonConvert.DeserializeObject metodu bizim için en önemli işi yapan metod. JSON formatındaki veriyi, bizim kullanabileceğimiz bir formata çeviriyor. Bu metodu kullanabilmek için, Json.NET kütüphanesini Nuget Manager kullanarak indirmemiz gerekiyor. Solution ögesine sağ tıklayıp "Manage Nuget Packages" diyelim ve arama kısmına Json.NET yazalım, çıkan kütüphaneyi indirdikten sonra, uygulamamız kullanılmaya hazır!

Alper Cem Polat |

23.07.2014

Yorumlar

Melih Çalışkan
13.01.2015 - 09:05

Selamlar,

"Json verisini kullanıcıya göstermek" bu kısmı daha detaylı yazabilir misiniz? O kodu nereye yazacağız?

Alper Cem Polat
14.01.2015 - 04:38
WebClient ı tanımladığınız ilk kod parçasını, örneğin sayfa ilk yüklendiği zaman Loaded event ine yazabilirsiniz. Orada amaç, bizim ihtiyaç duyduğumuz JSON formatındaki bilgilerin indirilmesini sağlamak. İndirilme bittiğinde ise DownloadStringCompleted otomatik olarak çağrılacak, artık ihtiyaç duyduğumuz bilgiler, rootObject değişkeninde tutuluyor. Bu değişkeni ve içindeki veriyi nasıl kullanacağınız size kalmış.
Melih Çalışkan
14.01.2015 - 04:55
WP'da çok çok yeniyim fazla soru sorabilirim o yüzden kusura bakmayın. Şimdi ben denemek için boş bir Windows Phone projesi açıp JsonData.cs dosyasını yazdığınız gibi kaydettim. Başka yaptığım birşey yok, siz "sayfa ilk yüklendiği zaman Loaded event ine yazabilirsiniz." yazmışsınız mesela. Bu eventi nasıl tanımlayabilirim?
Alper Cem Polat
14.01.2015 - 05:02
Rica ederim sorun değil sorabilirsiniz tabiki. Önce Windows Phone ile uygulama geliştirmenin temellerini öğrenip daha sonra proje yapmaya başlamanızı öneririm. Geleceği Yazanlar ve Açık Akademi üzerinden ilerleyebilirsiniz. https://gelecegiyazanlar.turkcell.com.tr/konu/windows-phone https://www.acikakademi.com/portal/egitimler/5/windows-phone-uygulama-gelistirme.aspx
Melih Çalışkan
14.01.2015 - 05:12

Açıkakademideki eğitimleri izledim şimdi Geleceğiyazanlardaki eğitimlere bakayım çok teşekkür ederim, iyi günler ^^