Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!
.Net Core 3'ün çıkmasına az bir zaman kala Microsoft tarafından duyurulan
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
JSON işlemleri için bir kütüphane oluşturulduğu belirtildi. Bu kütüphane ile birlikte JSON oluşturma, serialize/deserialize, dosya okuma/yazma ve DOM işlemlerini ekstra bir kütüphane kurmadan yapabileceğiz. JSON işlemlerinde kullanılan en yayın ve popüler dağıtımlardan biri olan
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
'a göre de daha performanslı çalıştığı makalede belirtilmiş.Şu an Nuget store'da prerelease aşamasında yer alan "System.Text.Json" paketini, .Net Core 3'ün final versiyonuna entegre olarak ekstra bir kurulum yapmadan kullanılabilir olması planlanmakta.
Özelliklere hızlıca göz atmak isterseniz sisteminizde aşağıdakilerin kurulu olması gerekmekte;
-
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
-
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
.Net Core 3 ile JSON İşlemlerini Yapmak
Visual Studio 2019 kullanarak, yeni bir Console uygulaması oluşturalım.
Oluşturacağımız projeye "CoreJsonProjesi" ismini verdim.
Kurulacağı yeri de belirttikten sonra projeyi oluşturuyoruz.
Projenin özelliklerine girdiğimizde, projede kullanılan .Net Core versiyonunun "Target Framework" altında ".Net Core 3.0" olduğundan emin olun.
JSON işlemlerini yapacağımız kütüphaneyi yüklemek için, Nuget Package Manager'i açıp, "System.Text.Json" yazarak indirelim. Arama işlemini yaparken arama kutusunun yanında yer alan "Include prerelease" kutusunun işaretli olduğundan emin olalım.
JSON Serialize Kullanımı
Projemize aşağıdaki gibi Ogrenci isminde bir sınıf(class) ekleyelim.
Kod:
public class Ogrenci
{
public string Ad { get; set; }
public string Soyad { get; set; }
public int No { get; set; }
public double Ortalama { get; set; }
}
Kod:
var yeniOgrenci = new Ogrenci
{
Ad = "Yiğit",
Soyad = "Nuhuz",
No = 320,
Ortalama = 50
};
Kod:
using System.Text.Json.Serialization;
Kod:
var json = JsonSerializer.ToString<Ogrenci>(yeniOgrenci);
Kod:
Console.WriteLine(json);
Kod:
{"Ad":"Yigit","Soyad":"Nuhuz","No":320,"Ortalama":50}
Serialize işlemini yaparken kullanabileceğimiz bazı özellikler de yer almakta. Mesela ekrana bastığımız değeri daha okunaklı bir hale getirmek için aşağıdaki gibi bir özellik tanımlayalım ve dönüşüm işlemi yapılırken bu özelliği de kullanalım.
Kod:
var options = new JsonSerializerOptions
{
WriteIndented = true
};
var json = JsonSerializer.ToString<Ogrenci>(yeniOgrenci,options);
Tüm bu işlemlerin ardından Main metodumuz aşağıdaki gibi olacaktır.
Kod:
tatic void Main(string[] args)
{
var yeniOgrenci = new Ogrenci
{
Ad = "Yigit",
Soyad = "Nuhuz",
No = 320,
Ortalama = 50
};
var options = new JsonSerializerOptions
{
WriteIndented = true
};
var json = JsonSerializer.ToString<Ogrenci>(yeniOgrenci,options);
Console.WriteLine(json);
}
JSON Deserialize Kullanımı
JSON metinlerini kendi oluşturduğumuz modellere dönüştürebiliriz. Bunun için öncelikle bir öğrenci JSON'ı tanımlayalım.
Kod:
var json = "{\"Ad\":\"Yigit\",\"Soyad\":\"Nuhuz\",\"No\":320,\"Ortalama\":50}";
Kod:
var yeniOgrenci = JsonSerializer.Parse<Ogrenci>(json);
Kod:
Console.WriteLine($"Öğrenci adı:{yeniOgrenci.Ad}");
Console.WriteLine($"Öğrenci soyadı:{yeniOgrenci.Soyad}");
Console.WriteLine($"Öğrenci numarası:{yeniOgrenci.No}");
Console.WriteLine($"Öğrenci ortalaması:{yeniOgrenci.Ortalama}");
Kod:
static void Main(string[] args)
{
var json = "{\"Ad\":\"Yigit\",\"Soyad\":\"Nuhuz\",\"No\":320,\"Ortalama\":50}";
var yeniOgrenci = JsonSerializer.Parse<Ogrenci>(json);
Console.WriteLine($"Öğrenci adı:{yeniOgrenci.Ad}");
Console.WriteLine($"Öğrenci soyadı:{yeniOgrenci.Soyad}");
Console.WriteLine($"Öğrenci numarası:{yeniOgrenci.No}");
Console.WriteLine($"Öğrenci ortalaması:{yeniOgrenci.Ortalama}");
}
JSON dönüşümlerinde aksi belirtilmedikçe gelen verilerin isimleri ile modelimizdeki değişkenlerin isimleri aynı olması gerekmekte. Fakat bizim örnek modelimizde yer alan "No" değişkeninin içini JSON içerisinde gelen "Numara" alanından almak istersek, modelimize aşağıdaki eklemeyi yapmamız gerekmekte.
Kod:
[JsonPropertyName("Numara")]
public int No { get; set; }
Kod:
static void Main(string[] args)
{
var json = "{\"Ad\":\"Yigit\",\"Soyad\":\"Nuhuz\",\"Numara\":320,\"Ortalama\":50}";
var yeniOgrenci = JsonSerializer.Parse<Ogrenci>(json);
Console.WriteLine($"Öğrenci adı:{yeniOgrenci.Ad}");
Console.WriteLine($"Öğrenci soyadı:{yeniOgrenci.Soyad}");
Console.WriteLine($"Öğrenci numarası:{yeniOgrenci.No}");
Console.WriteLine($"Öğrenci ortalaması:{yeniOgrenci.Ortalama}");
}
Dönüştürme işlemlerinde bazı alanlarda gelen veriyi almak yerine kendimizin vereceği değeri kullanmasını isteyebiliriz. Bunun için yine kendi modelimizde Ortalama değerine aşağıdaki eklemeyi yapıp, JSON'dan gelen değeri almamasını sağlayalım.
Kod:
[JsonIgnore]
public double Ortalama { get; set; }
Kod:
static void Main(string[] args)
{
var json = "{\"Ad\":\"Yigit\",\"Soyad\":\"Nuhuz\",\"Numara\":320,\"Ortalama\":50}";
var yeniOgrenci = JsonSerializer.Parse<Ogrenci>(json);
Console.WriteLine($"Öğrenci ortalaması:{yeniOgrenci.Ortalama}");
yeniOgrenci.Ortalama = 100;
Console.WriteLine($"Öğrenci ortalaması:{yeniOgrenci.Ortalama}");
}
Gördüğünüz gibi ilk olarak Ortalama değeri JSON içerisinde "50" vermemize rağmen "0" olarak "int" tipinin varsayılan değerini aldı. Ardından bizim atadığımız "100" değerini verdi.
JSON Writer Kullanımı
Kendi oluşturacağımız JSON'ı kayıt etmek için öncelikle projemize aşağıdaki eklemeleri yapıyoruz.
Kod:
using System.IO;
using System.Text;
Kod:
static void Main(string[] args)
{
using (var memoryStream = new MemoryStream())
{
using (var jsonWriter = new Utf8JsonWriter(memoryStream))
{
jsonWriter.WriteStartObject();
jsonWriter.WriteString("Ad", "Yigit");
jsonWriter.WriteString("Soyad", "Nuhuz");
jsonWriter.WriteNumber("No", 320);
jsonWriter.WriteNumber("Ortalama", 50.5);
jsonWriter.WriteEndObject();
}
FileStream file = new FileStream("YeniOgrenci.txt", FileMode.Create, FileAccess.Write);
memoryStream.WriteTo(file);
file.Close();
string json = Encoding.UTF8.GetString(memoryStream.ToArray());
Console.WriteLine(json);
}
}
FileStream ile oluşturduğumuz veriyi yazacağımız bir dosya tanımlıyoruz. "YeniOgrenci.txt" ile dosyamızın adını ve uzantısını tanımlıyoruz. Dosya adının başına herhangi bir dosya yolu vermediğimiz için varsayılan olarak projemizin içerisindeki "bin\Debug\netcoreapp3.0" içerisine oluşturacaktır. Farklı bir dosya yoluna kayıt etmek isterseniz dosya ismini başına kaydetmek istediğiniz dosya yolunu yazabilirsiniz.
Dosyayı oluşturup kaydettikten sonra son olarak hafızadaki verimizi bir string'e dönüştürüp ekrana yazıyoruz.
Projeyi çalıştırdığımızda aşağıdaki gibi hem json'ı console'da hem de txt içerisinde göreceksiniz.
Sonuç olarak, yıllardır Nuget mağazasında en yaygın kullanılan kütüphanelerden biri olan Newtonsoft.Json'a karşı yapılan bu yenilik geliştiriciler tarafından ne kadar tercih edilecek göreceğiz fakat yapılan performans testlerindeki hız artışı ve 3. parti kütüphane bağımlılığını azaltması bir çok projede tercih edilmesini sağlayacaktır.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 3
- Görüntüleme
- 386
- Cevaplar
- 1
- Görüntüleme
- 36
- Cevaplar
- 2
- Görüntüleme
- 187
- Cevaplar
- 5
- Görüntüleme
- 325