Asp.Net ile Json Verisi Üretmek

jsonMerhaba arkadaşlar, bu yazımda yine pratik bir kod parçasını açıklamaya çalışacağım. Özellikle son zamanlarda web sitelerinde iş mantığı sunucu tarafından istemci tarafına doğru kaydı. eskiden sadece animasyon ve görsellik için kullanılan javascript gibi istemci tarafındaki diller zamanla gerçek uygulamalar geliştirebilecek hale geldi. Örneğin bir dizi veriyi bir Gridview yardımıyla sunucu tarafında tablo yapısıyla gösterebiliriz aslında işimiz sadece bu veriyi göstermek ise zaten bu yöntem de uygundur fakat siz daha ileriye gidip gelişmiş bir gridview yapmak istiyorsanız örneğin filtreleme yapan, satırları sütunları gruplayan veya bol animasyonlu bir tablo oluşturmak istiyorsanız bunu sadece asp.net’in gridviewini kullanarak yapmanız mümkün olmayacaktır bol miktarda javascript kullanmalısınız.

Bu küçük örnekte de görüldüğü üzere artık web sitelerinin kritik işlemleri bile istemci tarafında gerçekleştirebiliniyor. Bu aşamada şüphesiz önemli işlemlerden biri sunucu ile istemci arasındaki veri alışverişinin çok uyumlu olması gerektiğidir zaten makalemizin konusunu da bu husus teşkil ediyor. Bir Ajax işlemi yaptığınızda geriye bir string, json ya da html çıktısı döndürebilirsiniz hangi türü seçmek işleminize göre değişir basit bir değer döndürecekseniz sadece string yeterlidir, aldığınız sonucu html içerisine gömmek istiyorsanız html çıktısı gereklidir, tek seferde birden çok değer almak istiyorsanız Json kullanmalısınız.

Öncelikle .Net tarafında basit bir şekilde nasıl Json dökümanı üretebiliriz bunu görelim

VB.Net

Private Function ConvertToJson()
   Dim nv As New NameValueCollection
   nv.Add("degisken1", “değer1”)
   nv.Add("degisken2", “değer2”)
   nv.Add("degisken3", “değer3”)
   Dim dict = New Dictionary(Of String, String)()
   For Each key As String in nv.Keys
     dict.Add(key, nv(key))
   Next
   Dim json As String = New JavaScriptSerializer().Serialize(dict)
   Return json
End Function

C#

private object ConvertToJson()
{
	NameValueCollection nv = new NameValueCollection();
	m.Add("degisken1", "değer1");
	m.Add("degisken2", "değer2");
	m.Add("degisken3", "değer3");
	dynamic dict = new Dictionary<string, string>();
	foreach (string key in nv.Keys) {
		dict.Add(key, nv(key));
	}
	string json = new JavaScriptSerializer().Serialize(dict);
	return json;
}

Yukarıdaki fonksiyon ile NameValueCollection sınıfını kullanarak basit anahtar, değer mantığı ile json döndürebilirsiniz örnek çıktı aşağıdaki gibi olacaktır

{“degisken1” : “değer1”, “degisken2” : “değer2”, “degisken3” : “değer3”}

Diğer bir json üretme tekniği ise bir sınıfı json dökümanına çevirmektir. örneğin

public class cocuk
{
    public int isim;
    public int soyisim;
    public int yas;
}
public class anne
{
    public string isim;
    public string soyisim;
    public cocuk annenincocugu;
}
private object ConvertToJson()
{
  var obj = new anne
  {
    isim = "ayşe",
    soyisim = "yılmaz",
    annenincocugu = new cocuk
    {
      isim = "ali",
      soyisim = "yılmaz",
      yas = 15
    }
  };
var json = new JavaScriptSerializer().Serialize(obj);
}

Bu fonksiyonun çıktısı aşağıdaki gibi olacaktır

{
  “isim”:”ayşe”,
  “soyisim”:”yılmaz”,
  “annenincocugu”:
  {
    “isim”:”ali”,
    “soyisim”:”veli”,
    “yas”:15
 }
}

İlk fonksiyonu çağırdığınız bir ajax fonksiyonunuz olduğunu varsayalım

$.ajax({
      url: "default.aspx/webmethod",
      type: "POST",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      data: "{value:'jsongetir'}",
      success: function (data) {
         var obj = jQuery.parseJSON(data);
         alert(obj.degisken1 + ‘ ‘ + obj.degisken2 + ‘ ‘ + obj.degisken3);
      }
});

Yukarıdaki ajax işlemi ile sayfamızdaki web metodu çağırıyoruz. web metodumuzun içinde ConvertToJson fonksiyonumuzun olduğunu varsayalım web metotdan bir json verisi dönecektir javascript ile de  jQuery.parseJSON fonksiyonunu kullanarak gelen Json verisini bir nesneye dönüştürüyoruz ve içerisindeki verilere property gibi erişebiliyoruz.

Bu şekilde sunucu ve istemci arasında tek seferde birden çok veriyi istikrarlı bir şekilde iletebilirsiniz. Umarım faydalı olmuştur.


Mustafa Tayyip YETİŞ
Yazılım Geliştirme Uzmanı

0.0 Ort. (0% puan) - 0 oy

Bir Cevap Yazın

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