Makale Özeti

Windows Phone uygulamalarında JSON Serialization kullanımına değinceğiz..

Makale

Windows Phone da json
serialization yapmak için biz JSON.NET kullanacağız öncelikle indirmemiz gerek bu linki takip ederek indirilebilirsiniz.

Şimdi Visual Studio for Windows Phone uygulamasını açıp File>New Project>Silverlight for Windows Phone>Windows Phone Application yolunu izleyerek Yeni bir wp projesi oluşturalım ve indirdiğimiz windows phone için olan .dll referanslarımıza ekledikten sonra solution explorer penceresinden Add > New Item > Class yolunu izleyerek


'TestJSON.cs' adında class oluşturalım
'TestJSON.cs' kodları

public class TestJSON
{
    public bool isBool { get; set; }
    public string Isim { get; set; }
    public int Yas { get; set; }
    public DateTime Zaman { get; set; }
}

class ı oluşturduktan sonra

Xaml design tarafında ‘btnCreateJson’ ve ‘btnReadJson’ adında 2 tane düğme ve bir de ‘JsonList’ adında listbox ekleyelim

 

 XAML tarafındaki kodlar

        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <Button Content="Create Json" Height="72" HorizontalAlignment="Left" Margin="6,6,0,0" Name="btnCreateJson" 
                    VerticalAlignment="Top" Width="194" Click="btnCreateJson_Click" />
            <Button Content="Read Json" Height="72" HorizontalAlignment="Left" Margin="232,6,0,0" Name="btnReadJson"
                    VerticalAlignment="Top" Width="218" Click="btnReadJson_Click" />
            <ListBox x:Name="JsonList" Margin="0,84,6,149">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                            <StackPanel Orientation="Horizontal" Height="200" Width="480" HorizontalAlignment="Left" Background="CadetBlue">
                            <TextBlock Name="txtIsim" Text="{Binding Isim}" />
                            <TextBlock Text="   " />
                            <TextBlock Name="txtIsBool" Text="{Binding isBool}" />
                            <StackPanel  Height="100" Orientation="Vertical">
                                    <TextBlock FontSize="28" Height="40"  Text="{Binding Yas}" VerticalAlignment="Center" Name="txtYas" />
                                <TextBlock Name="txtZaman" Text="{Binding Zaman}"/>
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Grid>

'btnCreateJson' Click event kodları

TestJSON jsn = new TestJSON();
jsn.isBool = true;
jsn.Isim = "Oguzhan";
jsn.Yas = 17;
jsn.Zaman = new DateTime(2012, 09, 24);

TestJSON jsn2 = new TestJSON();
jsn2.isBool = true;
jsn2.Isim = "Ergin";
jsn2.Yas = 23;
jsn2.Zaman = new DateTime(2017, 01, 01);

List lstJson = new List();
lstJson.Add(jsn);
lstJson.Add(jsn2);
IsolatedStorageFile isoStorage = IsolatedStorageFile.GetUserStoreForApplication();
using (var file = isoStorage.OpenFile("JsonInfo.txt", FileMode.Create, FileAccess.Write))//dosyayı oluştur yaz
{
    using (StreamWriter streamWriter = new StreamWriter(file))
    {
        JsonSerializer serializer = new JsonSerializer();
        serializer.Converters.Add(new JavaScriptDateTimeConverter());//zaman converter ekle
        serializer.NullValueHandling = NullValueHandling.Ignore;
        serializer.Serialize(streamWriter, lstJson);
    }
}

 

'btnReadJson' Click event kodları

//Serializer da yaptığınız ayarları deserializer yaparken de yapın!
List _jsonList = null;
IsolatedStorageFile _fileStore = IsolatedStorageFile.GetUserStoreForApplication();

using (var file = _fileStore.OpenFile("JsonInfo.txt", FileMode.OpenOrCreate, FileAccess.Read))
{
    using (StreamReader sr = new StreamReader(file))//dosyayyı oku
    {
        JsonSerializerSettings jsSettings = new JsonSerializerSettings();
        jsSettings.Converters.Add(new JavaScriptDateTimeConverter());
        jsSettings.NullValueHandling = NullValueHandling.Ignore;
        _jsonList = JsonConvert.DeserializeObject<List>(sr.ReadToEnd(),jsSettings);
    }
}
JsonList.ItemsSource = _jsonList;

bunları yaptıktan sonra uygulamamızı çalıştıralım cretate json ile oluşturup read json ile okuyalım.

Sonuç: