Json Veri Formatı

Json türündeki veriler iki parçadan oluşur: key (anahtar) ve value (değer). Anahtar’da nesnenin hangi özelliğinin olduğu (koddaki değişken ismi gibi düşünülebilir) tanımlanırken değerde ise anahtar özelliğinin değeri (değişkenin değeri) tanımlanır. Nesnelerdeki anahtar ve değerler string türünde tanımlanır. Aşağıda basit bir json nesnesi örneği bulunmaktadır.

?

{
   "Ad": "Veysel Uğur",
   "Soyad": "Kızmaz"
}
Yukarıdaki örnekte 2 tane anahtar ve 2 tane değer vardır: “Ad” anahtarının değeri “Veysel Uğur” , “Soyad” anahtarını değeri ise “Kızmaz” olarak tanımlanmıştır.
Nesne içerisinde istediğiniz kadar anahtar – değer (key-value) ikilisi tanımlayabilirsiniz.
?
1
2
3
4
5
6
7
{
    "Ad": "Veysel Uğur",
    "Soyad": "Kızmaz",
    "Bolum": "Bilgisayar Muhendisligi",
    "Sehir": "Ankara",
    "Telefon": "05000000000"
}

Json Nesne (Object) Yapısı

Her Json nesnesi süslü parantez ile başlar ve içinde sonsuz sayıda key-value ikilileri bulunabilir. Json.org sitesinde bu durumu anlatan güzel bir grafik mevcut:
Json nesne object yaps
Her Json nesnesi süslü parantez içinde tanımlanır. Nesne içinde anahtar (grafikte string) ve değer (grafiktevalue) tanımlamaları, araya iki nokta üst üste karakteri gelecek şekilde tanımlanır. Nesne içindeki her key-value ikilisinden sonra virgül karakteri kullanılır. Nesnenin tanımlaması bittikten sonra süslü parantez kapatılır.
Örnek 1: 1 key-value’ya sahip Json nesnesi: “Ad” anahtarının değeri : “Veysel Uğur”.
?
1
2
3
{
   "Ad": "Veysel Uğur"
}
Örnek 2: 2 key-value’ya sahip Json nesnesi: “Ad” anahtarının değeri: “Veysel Uğur” , “Soyad” anahtarının değeri “Kızmaz”
?
1
2
3
4
{
   "Ad": "Veysel Uğur",
   "Soyad": "Kızmaz"
}

Json Dizi (Array) Yapısı

Her Json dizisi köşeli parantez ile başlar ve içinde sonsuz sayıda değer bulunabilir. Dizilerde key-value ikilileri yoktur. Sadece string değer alabileceği gibi Json nesnesi de tanımlanabilir. Json.org sitesinde bu durumu anlatan güzel bir grafik mevcut:
Json dizi array yaps
Her Json dizisi köşeli parantez içinde tanımlanır. Dizi içindeki tüm değerler aralarında virgül karakteri gelecek şekilde tanımlanır. Dizinin tanımlaması bittikten sonra köşeli parantez kapatılır.
Örnek 1: 1 string değere sahip Json dizisi
?
1
2
3
[
    "Veysel Uğur"
]
Örnek 2: 2 string değere sahip Json dizisi
[
    "Veysel Uğur",
    "Kızmaz"
]
Örnek 3: 1 Json nesnesine sahip Json dizisi
?
1
2
3
4
5
6
7
8
9
[
    {
        "Ad": "Veysel Uğur",
        "Soyad": "Kızmaz",
        "Bolum": "Bilgisayar Muhendisligi",
        "Sehir": "Ankara",
        "Telefon": "05000000000"
    }
]
Örnek 4: 2 Json nesnesine sahip Json dizisi
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[
    {
        "Ad": "Veysel Uğur",
        "Soyad": "Kızmaz",
        "Bolum": "Bilgisayar Muhendisligi",
        "Sehir": "Ankara",
        "Telefon": "05000000000"
    },
    {
        "Ad": "Neslihan",
        "Soyad": "Yağmur",
        "Bolum": "Tıp Fakültesi",
        "Sehir": "Malatya",
        "Telefon": "05000000001"
    }
]
Örnek 5: 2 Json nesnesi ve 1 string değere sahip Json dizisi
?
1
2
3
4
5
6
7
8
9
10
11
12
[
    {
        "Ad": "Veysel Uğur",
        "Soyad": "Kızmaz",
        "Bolum": "Bilgisayar Muhendisligi",
        "Okul": "Gazi Üniversitesi",
        "Sehir": "Ankara",
        "Telefon": "05000000000"
    },
    "Asp.Net MVC 5",
    "Uygulamalarla Asp.Net 4.5"
]

Json Değerlerinin Alabileceği Veriler

Json değerlerinin string veri türünde yazıldığını yukarıda belirtmiştim. Json nesnelerinin içinde değerler (value) farklı türden veriler de alabilirler: “dizi”, “boolean veri (true, false)”, “null”, “Json Nesnesi”. Json değerlerinin esnek yapısı uygulama geliştirme aşamasında büyük kolaylıklar sağlayacaktır.
Örneğin yazar bilgilerinin bulunduğu Yazar ve yazarın kitaplarının bulunduğu Kitap türünde iki sınıfımız olsun. Bir yazarın birden fazla kitabı olabileceği için Yazar nesnesinin içinde birden fazla Kitap tanımlanmasına olanak sağlamalıyız. Aşağıda Yazar ve Kitap isimli C# sınıflarını tanımladım.
?
1
2
3
4
5
6
7
8
9
10
11
public class Yazar
{
    public string Ad { get; set; }
    public string Soyad { get; set; }
    public List<Kitap> Kitaplar { get; set; }
}
public class Kitap
{
    public string Ad { get; set; }
    public int BaskiSayisi { get; set; }
}
Yazar sınıfı türünden bir nesne tanımalyalım. Tanımladığımız yazarın 2 tane de kitabı olsun.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Yazar yazarVeyselUgurKizmaz = new Yazar
{
    Ad = "Veysel Uğur",
    Soyad = "Kızmaz",
    Kitaplar = new List<Kitap>
    {
        new Kitap
        {
            Ad = "Uygulamalarla Asp.Net 4.5",
            BaskiSayisi = 5
        },
        new Kitap{
            Ad = "Asp.Net MVC 5",
            BaskiSayisi = 2
        }
    }
};
Yukarıda C# kodlaması ile tanımladığımız veriyi Json ile tanımlayalım:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
    "Ad": "Veysel Uğur",
    "Soyad": "Kizmaz",
    "Kitaplar": [
        {
            "Ad": "UygulamalarlaAsp.Net4.5",
            "BaskiSayisi": "5"
        },
        {
            "Ad": "Asp.NetMVC5",
            "BaskiSayisi": "2"
        }
    ]
}