
|
||||||
| Bu Bölümlerimizi İncelediniz mi ?: |
Şimdi ÜCRETSİZ Üye Ol!
|
Silverlight 2.0 ve JSON Serialize / DeSerialize İşlemleri
Silverlight, Expression, LinQ, Ajax, JavaScript
![]() |
|
|
LinkBack | Seçenekler | Stil |
|
|
#1 | |||
|
Hayat İşte...
![]() 11 Oca 2008
Dünyadan
:
![]() Yaş: 24
Ruh hali:
![]()
Ettiği Teşekkür: 1,244
417 Mesajına 625 Kere Teşekkür Edlidi
Tepki Sayısı: 3
23 Mesajına 26 Kere Tepki Gösterildi |
Günümüzde çoğu AJAX uygulamasında veri transferi için JSON formatı kullanılıyor. ASP.NET programcılığı tarafında biz farkında olmasak da PageMethod'lar, Web Servisleri veya WCF Servisleri sunucudan JavaScript istemciye asenkron (AJAX) veri taşırken JSON ile çalışıyor. ASP.NET dışındaki dünyaya da baktığımızda tabi ki bu kural geçerliliğini koruyor, örneğin bugün twitter.com kendi uygulamalarından dışarıya asenkron veri aktarırken JSON formatını kullanıyor. Peki Silverlight 2.0 ile salt AJAX mantığından kurtularak artık Web Servislerimizi veya WCF servislerimizi doğrudan asenkron olarak kullanabildiğimize göre karşımıza eski JSON kaynakları gelirse ne yapacağız?
.NET nesnelerinden JSON oluşturmak. Hikayenin tersinden başlayalım ve ilk olarak istemci tarafında JSON verisi nasıl yaratırız onu inceleyelim. Zaten genelde harici bir web servisinden JSON verisi alacaksanız büyük ihtimal ile elinizdeki hazır bir JSON verisini de web servisine göndermek durumunda kalacaksınız. Bu gibi bir durumda rahatlıkla elimizdeki .NET nesnelerini JSON formatına çevirebiliyor olmalıyız. Silverlight 2.0 Beta 1 ile beraber gelen sınıflardan system.runtime.serialization.json.datacontractjson serializer sınıfını kullanacağız. Bu sınıfı normal şartlarda kullanmak isterseniz herhangi bir Silverlight uygulamasında Intellisense ile bulma şansınız olmayacaktır. Söz konusu sınıf harici olarak System.ServiceModel.Web.dll dosyası içerisinde kendisini projemize referans olarak almamızı bekliyor. Gerekli referansı projeye ekledikten sonra rahatlıkla JSON işlemlerini tamamen istemci tarafında yürütebiliyoruz. Uygulamamızda bir öğrencinin adını ve soyadını taşıyacak bir Ogrenci sınıfı kullanacağız. JSON ile çeviri işlemleri yaparken elimizdeki çevireceğimiz nesnenin tipinin belirli şekilde tanımlanmış olması gerekiyor. O nedenle hemen aşağıdaki kod ile tipimizi tanımlayalım. HTML-Kodu:
Public Class Ogrenci
Private Padi As String
Public Property Adi() As String
Get
Return Padi
End Get
Set(ByVal value As String)
Padi = value
End Set
End Property
Private PSoyadi As String
Public Property Soyadi() As String
Get
Return PSoyadi
End Get
Set(ByVal value As String)
PSoyadi = value
End Set
End Property
Sub New()
End Sub
Sub New(ByVal adi As String, ByVal soyadi As String)
Me.Adi = adi
Me.Soyadi = soyadi
End Sub
End Class
HTML-Kodu:
<UserControl x:Class="JSON.Page" xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300"> <Grid x:Name="LayoutRoot" Background="White"> <TextBox Height="31" HorizontalAlignment="Left" Margin="22,19,0,0" VerticalAlignment="Top" Width="151" Text="Adı" x:Name="Adi1"/> <TextBox Height="26" HorizontalAlignment="Left" Margin="22,54,0,0" VerticalAlignment="Top" Width="151" Text="Soyadı" x:Name="Soyadi1"/> <TextBox Margin="22,142,23,19" Text="TextBox" x:Name="Sonuc"/> <Button Height="29" HorizontalAlignment="Right" Margin="0,99,97,0" x:Name="Dugme2" VerticalAlignment="Top" Width="102" Content="JSON'dan Al"/> <Button Height="29" HorizontalAlignment="Left" Margin="45,99,0,0" x:Name="Dugme1" VerticalAlignment="Top" Width="102" Content="JSON Yarat"/> </Grid> </UserControl> HTML-Kodu:
Dim Cevirici As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(Ogrenci)) Dim Veri As New IO.MemoryStream Cevirici.WriteObject(Veri, New Ogrenci(Adi1.Text, Soyadi1.Text)) Sonuc.Text = Text.Encoding.UTF8.GetString(Veri.ToArray, 0, Veri.Length) Böylece uygulamamızda dinamik olarak JSON yaratma sorununu çözmüş olduk. Tamamen istemci tarafında rahatlıkla yarattığımız .NET nesnelerini JSON formatına çevirebiliyoruz. Şimdi de tam tersi bir senaryoya göz atalım. JSON verisinden .NET nesneleri yaratmak Bir önceki bölümde kullandığımız örneği aynen kullanmaya devam edelim. Bu sefer de tam tersi bir işlem yaparak Sonuc adındaki metin kutusu içerisine yazılan JSON verisini okuyarak içerisinde öğrencinin adını ve soyadını alıp diğer metin kutularının içerisine yerleştirelim. HTML-Kodu:
Dim Cevirici As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(Ogrenci)) Dim Veri As New IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(Sonuc.Text)) Dim GenelOgrenci = CType(Cevirici.ReadObject(Veri), Ogrenci) Adi1.Text = GenelOgrenci.Adi Soyadi1.Text = GenelOgrenci.Soyadi Her iki uygulamayı da bir örnek projede yaptığımızda ilk önce metin kutularına veri girerek JSON verisini yaratabiliyor sonrasında da JSON verisini Sonuc metin kutusunda elle değiştirip tekrar diğer metin kutularına güncel değerlerin aktarılabilmesi için DeSerialize işleminin yapılmasını sağlayabiliyoruz. Uygulamamızın tam kodu aşağıdaki şekilde sonlanıyor. HTML-Kodu:
Partial Public Class Page
Inherits UserControl
Public Sub New()
InitializeComponent()
End Sub
Public Class Ogrenci
Private Padi As String
Public Property Adi() As String
Get
Return Padi
End Get
Set(ByVal value As String)
Padi = value
End Set
End Property
Private PSoyadi As String
Public Property Soyadi() As String
Get
Return PSoyadi
End Get
Set(ByVal value As String)
PSoyadi = value
End Set
End Property
Sub New()
End Sub
Sub New(ByVal adi As String, ByVal soyadi As String)
Me.Adi = adi
Me.Soyadi = soyadi
End Sub
End Class
Private Sub Dugme1_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Dugme1.Click
Dim Cevirici As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(Ogrenci))
Dim Veri As New IO.MemoryStream
Cevirici.WriteObject(Veri, New Ogrenci(Adi1.Text, Soyadi1.Text))
Sonuc.Text = Text.Encoding.UTF8.GetString(Veri.ToArray, 0, Veri.Length)
End Sub
Private Sub Dugme2_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Dugme2.Click
Dim Cevirici As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(Ogrenci))
Dim Veri As New IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(Sonuc.Text))
Dim GenelOgrenci = CType(Cevirici.ReadObject(Veri), Ogrenci)
Adi1.Text = GenelOgrenci.Adi
Soyadi1.Text = GenelOgrenci.Soyadi
End Sub
End Class
Kaynak: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] |
|||
İmzam![]() |
|
![]() |
| Bookmarks |
| Etiketler |
| işlem, json, json deserialize, json serialize, silverlight, silverlight 2.0 |
«
Silverlight 2.0 içerisinde Hue / Saturation ve Lightness ile dinamik renk paletleri
|
Cross Domain Request için sunucu taraflı ASP.NET Proxy
»
| Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| Seçenekler | |
| Stil | |
|
|
Benzer Konular
|
||||
| Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
| Silverlight 1.0 Font Embedding | XiLoNeN | Silverlight, Expression, LinQ, Ajax, JavaScript | 0 | 26-05-2008 15:18 |
| Silverlight MediaElement ve JavaScript | XiLoNeN | Silverlight, Expression, LinQ, Ajax, JavaScript | 0 | 26-05-2008 14:53 |
| Silverlight Uygulamalarında Performans | XiLoNeN | Silverlight, Expression, LinQ, Ajax, JavaScript | 0 | 26-05-2008 14:48 |
| Silverlight Streaming Servisleri | XiLoNeN | Silverlight, Expression, LinQ, Ajax, JavaScript | 0 | 26-05-2008 14:43 |
| Silverlight 2.0 GridSplitter Kullanımı | XiLoNeN | Silverlight, Expression, LinQ, Ajax, JavaScript | 0 | 26-05-2008 01:45 |
WEZ Format +3. Şuan Saat: 20:14.

































Normal


