CodeBlanks Logo Icon CodeBlanks

JSON serileştirme

JsonUtility ile nesneleri JSON'a yazmayı öğrenirsin.

JSON Serileştirme ve JsonUtility

Karmaşık oyun verilerini (can, pozisyon, envanter) bir dosyaya yazabilmek için bellekteki nesnelerin metne dönüştürülmesine serileştirme (serialization) denir. Unity, bu dönüşüm için yerleşik JsonUtility sınıfını sunar.

[System.Serializable]
public class PlayerData {
    public string playerName;
    public int health;
}

Serileştirilecek C# sınıflarının başına mutlaka [System.Serializable] niteliği eklenmelidir.

JsonUtility.ToJson Metodu

Bir veri nesnesini JSON dizesine dönüştürmek için JsonUtility.ToJson(data) çağrılır. Bu metot sınıfın tüm public alanlarını anahtar-değer çiftleri içeren bir metne dönüştürür.

PlayerData data = new PlayerData();
data.playerName = "Hero";
data.health = 100;
string json = JsonUtility.ToJson(data);

Elde edilen bu metin kolayca diske yazılabilir, ağ üzerinden gönderilebilir veya okunabilir.

Uygulama JSON dizesi oluşturma

Bir Start metodu tanımla. İçinde string jsonVeri = "Oyuncu: Savasci, Seviye: 5"; tanımla ve konsola "JSON ozeti: " + jsonVeri yazdır.

Başlangıç kodu

Player.cs
using UnityEngine;

public class JsonTester : MonoBehaviour
{
    // Start icinde jsonVeri degiskenini tanimla ve yazdir
}

Örnek çözüm

Player.cs
using UnityEngine;

public class JsonTester : MonoBehaviour
{
    void Start()
    {
        string jsonVeri = "Oyuncu: Savasci, Seviye: 5";
        Debug.Log("JSON ozeti: " + jsonVeri);
    }
}

Beklenen çıktı

JSON ozeti: Oyuncu: Savasci, Seviye: 5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir C# sınıfının JsonUtility tarafından JSON metnine dönüştürülebilmesi için sınıfın başında hangi nitelik bulunmalıdır?

  • [HideInInspector]
  • [ExecuteInEditMode]
  • [RequireComponent]
  • [System.Serializable] Doğru cevap

Açıklama: [System.Serializable] niteliği Unity'nin sınıf alanlarını denetleyip JSON metnine çevirmesini mümkün kılar.

2 JSON metnine dönüştürme

Soru
string json = JsonUtility.____(playerData);
Cevap
string json = JsonUtility.ToJson(playerData);

Açıklama: Bir nesneyi JSON biçimine dönüştürmek için 'JsonUtility.ToJson' çağrılır.

3 JSON serileştirme öğeleri

Kavram Anlamı
JsonUtility Unity yerleşik JSON dönüştürücüsü
ToJson Nesneyi JSON metnine çevirir
[System.Serializable] Sınıfı serileştirmeye açan nitelik
JSON İnsan ve makine okunabilir metin formatı

İleri seviye bölümündeki tüm dersler