Press ESC to close

Json Veri Çekmek

Merhaba arkadaşlar bu yazımda nasıl Json Verileri çekeceğimizden bahsedeceğim. Öncelikle Json nedir bunu bilmemiz gerekiyor tabi. Json aslında JavaScript için oluşturulmuş olan bir veri formatıdır. Json’dan önce xml gibi yöntemler kullanılıyordu ama zamanla bu veri türleri ağır ve kullanışsız olmasıyla beraber Json veri türü ortaya çıkmıştır. Json kısa halidir. Uzun hali ise JavaScript Object Notation yani JavaScript obje gösterimi demektir.

Peki biz bu json verileri nerede ve nasıl kullanacağız diyorsanız bunun cevabı; her yerde kullanacaksınız. Örnek vermek gerekirse bir proje yazıyorsunuz. Bu projede hem web tarafı var hem mobil tarafı var hem de Windows Form olduğunu düşünelim. Geliştireceğiniz projede veriler ile çalışacaksınız. Bu verileri göstermenin ve transfer etmenin en kolay yollarından biri Json ile çalışmaktır. Tabi bu işlemleri de bir web servis ile haberleştirmeniz gerekiyor. Daha önce ki yazımda Asp.Net Core ile web servis geliştirilmesinden bahsetmiştim. Burada da veriler Json veri formatında dönüyordu. O yazıya buradan ulaşabilirsiniz.

Bu yazımda ise herhangi bir uygulamanızda nasıl web servisten bu Json veri tipinde dönen verileri projenize çekebileceğinizden bahsedeceğim. Ben örnek olması açısından Console’da verileri çekeceğim. Tabi bunun için örnek veriler olması gerekiyor.Ben örnek olarak burada bulunan Json verileri kullanacağım. Ama siz kendi oluşturmuş olduğunu verileri de kullanabilirsiniz.

Console projemizi açıyoruz. Burada yapacağımız ilk işlem Json veriler ile işlem yapabilmeyi kolaylaştırması için bir paket yüklememiz gerekiyor. Bu paket Newtonsoft.Json paketidir.

 

Paketi ekledikten sonra veriler alacağız ama bu verileri aldıktan sonra bir tip, bir model ile ilişkilendirmemiz gerekiyor. Bunun için gelecek verinin modelinden bizimde bir model oluşturmamız gerekiyor. Bizim örnek olarak kullanacağımız sitede ki veriler için nasıl oluşturacağız diyorsanız çok kolay bir yöntemi var. Bunun için verileri alacağımız sitedeki tüm metini kopyalıyoruz ve bir başka güzel site olan Json2csharp sitesinden herhangi bir veri dizisi için model oluşturabilirsiniz. Linkini bırakmış olduğum site için oluşa model aşağıda ki gibidir.

public class OrnekVeri
    {

        public int userId { get; set; }
        public int id { get; set; }
        public string title { get; set; }
        public string body { get; set; }
    }

Gelecek veriyi için bir model yazdıktan sonra modeli getirmeye kaldı iş. Bunun için bir yönetici yazmamız gerekiyor. Bir sınıf oluşturduktan sonra HttpClient oluşturmamız gerekiyor. Bu clienti oluşturduktan sonra hangi tür ile çalışacağımız belirtmemiz gerekiyor. Biz json veriler ile çalışacağımız için bunu belirtiyoruz. Şimdi ise hangi siteden verileri çekmemiz gerektiğini bir Url’de belirtmemiz gerekiyor. Belirttikten sonra client ile string olarak bu sitede ki verileri okuyoruz. Bu verileri okuduktan sonra başta eklemiş olduğumuz paket ile verileri düzgün bir biçimde modelimize entegre ediyor. Son işlem olarak ise bu verileri liste şeklinde geri döndürüyorum. Burada dikkat etmemiz gereken şeyler ise fonksiyonların asenkron olması. Bu sayede arkada başka işlemlerde yapabiliriz ve veriyi çekmek için beklenmesi gerekebilir.

private string Url = "https://jsonplaceholder.typicode.com/posts";
        private async Task<HttpClient> ClientOlustur()
        {
            HttpClient client = new HttpClient();
            client.DefaultRequestHeaders.Add("Accept", "application/json");


            return client;
        }
        public async Task<IEnumerable<VeriCekmek.Models.OrnekVeri>> VerileriGetir()
        {
            HttpClient client = await ClientOlustur();
            var result = await client.GetStringAsync(Url);
            return JsonConvert.DeserializeObject<IEnumerable<OrnekVeri>>(result);

        }

En son olarak bu verileri Console’da göstermemiz kaldı. Verileri çektikten sonra kolay bir şekilde gösterebilirsiniz. Fotoğrafta kaç adet veri olduğunu ve örnek bir veriyi görebilirsiniz.

Eğer aklınıza takılan sorular olursa mail veya yorum atarak bana ulaşabilirsiniz.

 

Comments (10)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir