Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Asp.NET MVC – JSON

Yapısal olarak XML diline benzeyen, veri taşımak için oluşturulmuş standart bir Object JavaScript dilidir.JSON(JavaScript Object Notation), JavaScript içerisinde kolayca işlenebilme özelliğine sahiptir.Bu özelliği yüzünden genellikle Ajax platformunda tercih edilmektedir.JSON ile düzenlenen bir veri yapısına JavaScript komutlarıyla çok hızlı ve esnek bir şekilde erişilebilmektedir.Yapısal olarak her ne kadar XML diline benzesede, XML’e göre daha hızlı parse edilmekte ve fiziksel boyut olarakta az yer kaplamaktadır.Bunun nedeni ise, JSON’da XML’de olduğu gibi “node” açıp kapatmayla uğraşılmamakta, onun yerine satırlar ve elementler birbirlerinden noktalama işaretleri ve parantezler ile ayrılmaktadırlar.Şimdi gelin beraber Asp.NET MVC yapısıyla JSON mimarisini birlikte daha detaylı inceleyelim.

Öncelikle JSON yapısında kullanılan veri tiplerini görelim.
string“, “number“, “bool“, “array“, “object” ve “null

Şimdi hemen bir Asp.NET MVC projesinde örneklendirme yapalım.

        public ActionResult Index()
        {
            return View();
        }

        public JsonResult OgrencileriGetir()
        {
            List<ListItem> Liste = new List<ListItem>() {
            new ListItem{ Value = "1" , Text = "Ahmet"},
            new ListItem{ Value = "2" , Text = "Mehmet"},
            new ListItem{ Value = "3" , Text = "Ali"},
            new ListItem{ Value = "4" , Text = "Ayşe"},
            new ListItem{ Value = "5" , Text = "Gençay"},
            };

            return Json(Liste, JsonRequestBehavior.AllowGet);
        }

Yukarıdaki kod bloğunu incelersek eğer, “JsonResult” tipinden “OgrencileriGetir” isimli metodumuzda bir öğrenci bilgisini tutan liste mevcut ve metodumuz bu listeyi JSON yapısında döndürmektedir.

Şimdi bu listeyi “Index” isimli Action metodumuzun View katmanından çekeceğiz.

<script type="text/javascript">// <![CDATA[
    $(function () {
        $('#btnOgrencileriGetir').click(function () {
            $.getJSON("/Home/OgrencileriGetir", null, function (data) {
                jQuery.each(data, function (i, eleman) {
                    $("#OgrenciListesi").append(eleman.Value + " " + eleman.Text + "<br>
");
                });
            });
        });
    });
</script>

<input id="btnOgrencileriGetir" type="button" value="Öğrencileri Getir" />
<div id="OgrenciListesi"></div>

Yukarıdaki kod bloğunu incelerseniz eğer, “btnOgrencileriGetir” isimli butona tıklandığı zaman tetiklenecek JavaScript kodunu yazıyoruz.”getJSON” metodu ile JSON verisini alıyoruz.Birinci parametreye JSON döndüren metodumuzu, ikinci parametreye ise bu metoda göndereceğimiz parametreyi yazıyoruz.”function (data)” metodu ile JSON verimiz “data” isimli parametreye yükleniyor.”jQuery.each” metodu C#’ta ki “foreach” döngüsüne benzer niteliktedir ve bu metod sayesinde liste halinde gelen verimizi ayrıştırıp gerekli alana yansıtıyoruz.

Bu işlemin ekran görüntüsü aşağıdaki gibi olacaktır.
AspNetMvcJSon

Buraya kadar Server’dan JSON formatında nasıl veri alındığını gördük.Şimdide Server’a JSON formatında veri göndermeyi inceleyelim.

Bu örneklendirmeyi bir model üzerinden gerçekleştireceğimiz için öncelike “Ogrenci” isminde bir model tanımlıyorum.

    public class Ogrenci
    {
        public int OgrenciNo { get; set; }
        public string Adi { get; set; }
        public string SoyAdi { get; set; }
    }

Şimdi bu modeli POST edebilecek yapıda bir View sayfası tasarlayalım.(Örnek olarak “Home(Controller).cs” isimli Controller sayfasının “Index” Action metodunun .cshtml uzantılı dosyasında)

<div>@Html.TextBox("OgrenciNo")</div>
<div>@Html.TextBox("Adi")</div>
<div>@Html.TextBox("SoyAdi")</div>
<div><input id="btnGonder" type="submit" value="Ogrenciyi JSON Olarak Gönder" /></div>

Şimdi ise oluşturduğumuz bu formdaki bilgileri Server’a JSON tabanlı POST edecek JQuery kodlarımızı yazalım.

<script type="text/javascript">
    $('#btnGonder').click(function () {
        var Ogrenci = {
            OgrenciNo: $('#OgrenciNo').val(),
            Adi: $('#Adi').val(),
            SoyAdi: $('#SoyAdi').val()
        };
        $.ajax({
            url: '/Home/GelenOgrenci',
            type: 'POST',
            data: JSON.stringify(Ogrenci),
            dataType: 'json',
            contentType: 'application/json; charset=utf-8'
        });
        return false;
    });
</script>

Yukarıdaki kod bloğunu incelersek eğer, “btnGonder” isimli butonumuz tetiklendiği an “Home(Controller).cs” isimli Controller sınıfındaki “GelenOgrenci” isimli metodun çalışacağı bildirilmiştir.”data” parametresi ile JSON formatında oluşturulan “Ogrenci” isimli nesnemiz Server’a gönderilecektir.

Şimdide son olarak “Home(Controller).cs” Controller sınıfımızdaki “GelenOgrenci” metodunu oluşturalım.

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult GelenOgrenci(Ogrenci ogrenci)
        {
            return View();
        }
    }

Projemizi “GelenOgrenci” metoduna Break – Point koyarak, bu şekilde derleyip çalıştırdığımız zaman aşağıdaki ekran görüntüsüyle karşılaşacağız.
AspNetMvcJSon2

Son olarak dikkat etmemiz gereken bir hususa değinmek gerekirse, JQuery kütüphanesindeki “JSON.stringify()” metodu IE9 ve üzeri browserlarda desteklenmektedir.

Sonraki yazılarımda görüşmek ümidiyle..
Faydalanmanız dileğiyle..
İyi çalışmalar..

Bunlar da hoşunuza gidebilir...

7 Cevaplar

  1. fahrettin dedi ki:

    Teşekürler anlatımız için çok işime yarayacak 🙂

  2. Mustafa dedi ki:

    Çok güzel anlatmışsınız , anlaşır video şeklinde yoktur sanırım makale , android de verileri çekmek istiyorum yardımcı olabilirmisiniz bana , örneğin mvc4 sql günler diye tablo ve saatler web tarafında pazartesi , salı , çarşamba …. , pazartesiye tıklayınca saatler gelecek 9:40 10:05 gibi bilgi verecek sadece aynı şekilde android uygulaması yapmayı düşünüyorum.

    • Gençay dedi ki:

      Merhaba Mustafa Bey,
      Öncelikle güzel yorumunuz için teşekkür ederim.
      Şu süreçte yoğun bir KPSS çalışmasında bulunduğum için ne yazık ki yazılım konusunda kendi işlerimle bile ilgilenemez oldum.O yüzden size bu konuda söz veremeyeceğim.Lakin süreç esnasında size yardımcı olmaya çalışırım.
      Saygılarımla…

  3. Ali KÖPRÜLÜ dedi ki:

    Anlatımınız gerçekten çok güzel, kodun çalışması çok işime yaradı, bir kaç tane çalışmayan denk geldi 🙂
    Bu arada kod paylaşımını ne ile yapıyorsunuz merak ettim bir kaç tane kod paylaşım sistemi denemiş olmama rağmen siyah arkaplan dikkatimi çekti.
    İyi çalışmalar.

    • Gençay dedi ki:

      Merhaba Ali Bey,
      Öncelikle nezaketinize teşekkürlerimi sunarım…

      SyntaxHighlighter isimli eklentiyi kullanmaktayım. Siyah arka plan istiyorsanız eklenti yönetiminden Gri tema rengini seçmeniz yeterli olacaktır.
      Sevgilerimle…

  1. 28 Kasım 2020

    […] Nedir? sorusuna cevap verelim.JsonResult, elimizdeki modeli bize JSON(JavaScript Object Notation) veri yapısında geri döndürmemizi sağlayan bir […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir