Published on

C#'da JSON Kullanımı

Authors
  • avatar
    Name
    Alperen Önal
    Twitter

Örneklerle C#’da JSON Kullanımı

C#’da JSON veri yapısını kullanabilmek için yaygın olarak tercih edilen 2 adet class vardır bunlar :

1-) Newtonsoft.Json.JsonConvert : Newtonsoft’un geliştirdiği open-source json serileştirme ve deserileştirme class’ıdır. JSON.NET olarak da bilinmektedir. Kullanmak için projenize eklemelisiniz.

2-)JsonSerializer : .NET CORE 3.0 ve sonrasındaki sürümlerinde “System.Text.Json” altında gömülü olarak gelen class’dır.

Biz, bu yazımızda yaygınlığından ve kullanım kolaylığından dolayı JsonSerializer class’ını ele alacağız.

Deserialize(deserileştirme) :

Aşağıdaki gibi bir JSON formatında verimiz olsun.

[
  {
    "Name": "Alperen",
    "Yas": 22,
    "Boy": 185,
    "Kilo": 70
  },

  {
    "Name": "Mehmet",
    "Yas": 35,
    "Boy": 178,
    "Kilo": 82
  }
]

Öncelikle bu JSON dosyasının bulunduğu dizini kodumuzda belirterek bir string değişkene atıyoruz.

using System;

public class Program
{
    public static void Main(string[] args)
    {
        //json dosyamızı okuyoruz.
        string jsonIcerigi= System.IO.File
            .ReadAllText(@"C:\Users\Alperen\source\repos\ConsoleApp47\ConsoleApp47\dataFile.json");
        Console.WriteLine(jsonIcerigi);

    }
}

Kodun çıktısı :

Daha sonrasında JSON dosyamızın içindeki verileri kopyalıyoruz ve sol üstte bulunan Edit->Paste Special->JSON seçtiğimiz zaman visual studio otomatik olarak JSON verilerinizi karşılayacak bir class oluşturacaktır. Bu işlemi her hangi bir JSON converter sayfasından ya da kendi elinizle manuel olarak da yapabilirsiniz.

İşlem sonucunda aşağıda görülebileceği gibi Class1 sınıfını otomatik olarak oluşturuyor.

Şimdi JSON dosyasını deserialize edip içindeki isimleri ekrana yazdıralım.

using System;


public class Program
{
    public static void Main(string[] args)
    {
        //json dosyamızı okuyoruz.
        string jsonIcerigi = System.IO.File
            .ReadAllText(@"C:\Users\Alperen\source\repos\ConsoleApp47\ConsoleApp47\dataFile.json");

        //JSON verileri liste halinde bu yüzden Deserialize'ın genaric tip parametresini Class1 tipinde bir List yapıyoruz.
        //Bu işlem sonucunda değişkenlerimiz program içinde kullanabileceğimiz objeye bind edilecek.
        List<Class1> deserialize = System.Text.Json.JsonSerializer.Deserialize<List<Class1>>(jsonIcerigi);
        foreach (var item in deserialize)
        {
            Console.WriteLine(item.Name);


        }

    }
}



public class Class1
{
    public string Name { get; set; }
    public int Yas { get; set; }
    public int Boy { get; set; }
    public int Kilo { get; set; }
}

Çıktısı :

Serialize(serileştirme) :

using System;


public class Program
{
    public static void Main(string[] args)
    {


        List<Class1> list = new List<Class1>()
        {
            new Class1()
            {
                Name = "Adem",
                Yas = 27,
                Boy = 176,
                Kilo = 73,
            },


            new Class1()
            {
                Name = "Mert",
                Yas = 21,
                Boy = 173,
                Kilo = 53,
            },

            new Class1()
            {
                Name = "Hakan",
                Yas = 21,
                Boy = 183,
                Kilo = 79,
            }
        };


        //list verimizi serileştirek serialize değişkeni içerisine atıyoruz.
        string serialize = System.Text.Json.JsonSerializer.Serialize<List<Class1>>(list);
        System.IO.File.WriteAllText(@"C:\Users\Alperen\source\repos\ConsoleApp47\ConsoleApp47\dataFile.json" ,serialize);

    }
}



public class Class1
{
    public string Name { get; set; }
    public int Yas { get; set; }
    public int Boy { get; set; }
    public int Kilo { get; set; }
}

Aşağıda görülebileceği gibi JSON dosyamıza yolladığımız veriler başarıyla eklendi.

Zaman ayırdığınız için teşekkür ederim. Bir sonraki yazımda görüşürüz !