CodeBlanks Logo Icon CodeBlanks

Liste ve dictionary serileştirme

C# kursu · Orta seviye · Ders 110/116

List<T> ve Dictionary<K,V>'yi JSON'a çevirmeyi öğrenirsin.

List<T> serileştirme

JsonSerializer, yalnızca tek nesneleri değil, koleksiyonları da serileştirir. Bir List<Person>'ı JsonSerializer.Serialize(list) ile çağırırsan sonuç bir dizi olur: [{...},{...}].

Her eleman, tek nesne biçimine göre serileştirilir. Listenin tamamı köşeli parantezler arasına alınır. Deserialize<List<Person>>(text) ile geri çevrilir. Bu, birden çok kaydı dosyada saklamanın en kolay yoludur.

Dictionary<K,V> serileştirme

Dictionary<string, int> gibi bir sözlük, anahtar-değer çiftleri olarak serileştirilir: {"elma":5,"armut":3}. Sözlük anahtarları metin olur, değerler türüne göre yazılır.

Deserialize<Dictionary<string, int>>(text) ile geri çevrilir. Sözlük anahtarı string ya da sayı olabilir; serileştirmede her zaman metne dönüşür. Bu, ayar ya da çeviri tabloları için idealdir.

Uygulama Person listesi serileştir

Aşağıdaki people listesini JsonSerializer.Serialize(people) ile metne çevir ve Console.WriteLine ile yazdır. Listenin iki öğesi vardır.

Örnek çözümü göster
string text = JsonSerializer.Serialize(people); ile listeyi metne çevir, Console.WriteLine(text); ile yazdır.
Örnek çözüm:
using System;
using System.Collections.Generic;
using System.Text.Json;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var people = new List<Person>
        {
            new Person { Name = "Ayşe", Age = 30 },
            new Person { Name = "Mehmet", Age = 25 }
        };
        string text = JsonSerializer.Serialize(people);
        Console.WriteLine(text);
    }
}

Kendini test et

  1. List tür parametresi

    var list = JsonSerializer.Deserialize<List<____>>(text);
    Cevabı göster
    var list = JsonSerializer.Deserialize<List<Person>>(text);
  2. List<Person> nasıl serileştirilir?

    • Köşeli parantezli dizi olarak
    • Tek nesne gibi
    • Sözlük olarak
    • Serileştirilemez
    Cevabı göster

    Köşeli parantezli dizi olarak — Doğru. List<Person> köşeli parantezli dizi olarak serileştirilir: [{...},{...}].

  3. Türü çıktısına eşle

    List<Person>
    [{...},{...}]
    Dictionary<string,int>
    {"a":1,"b":2}
    Person
    {"Name":"..."}
    int
    5

Orta seviye bölümündeki tüm dersler