JSON (JavaScript Object Notation) bir veri değişim formatıdır. JSON, dilden bağımsızdır, C dilleri ailesinin syntax (söz dizimi) yapısına aşina olan (C, C ++, C #, Java, JavaScript, Perl, Python ve diğerleri) herkes tarafından kolayca öğrenilebilir. Bu özellikler JSON'u ideal bir veri değişim dili yapar.

Json serialize ve deserialize işlemi için en yaygın olan kütüphane NewtonSoft.Json kütüphanesidir.
PM> Install-Package Newtonsoft.Json
Website : https://www.newtonsoft.com/json


Json örnek veri tipleri ;

Array, (json dilinde Jarray)
["kedi",  "köpek",  "kuş"]
Deserialize işlemi;

string veri = "[\"kedi\",  \"köpek\",  \"kuş\"]";
    var j = JsonConvert.DeserializeObject(veri);
    foreach (var a in j)
    {
        Response.Write(a);
        Response.Write("<br>");
    }
Object, (Json dilinde JObject)
{"adi" : "kadir",  "soyadi" : "çelik",  "email" : "email@adres.com" }
Deserialize işlemi ;
 string veri = "{\"adi\":\"kadir\",\"soyadi\":\"çelik\",\"email\":\"email@adres.com\"}";
    var j = JsonConvert.DeserializeObject(veri);
    Response.Write(j("adi"));
    Response.Write("<br>");
    Response.Write(j("soyadi"));
// vs. v.s v.s
Object ve array bir arada;
{"kategori": "uçak",  "koltuklar": [1,2,3]}
Deserialize işlemi ;

string veri = "{\"kategori\": \"uçak\",  \"koltuklar\": [1,2,3]}";
    var j = JsonConvert.DeserializeObject(veri);
    var ka = j("kategori");
    var ko = j("koltuklar");

    Response.Write(ka);
    Response.Write("<hr>");
    foreach (var k in ko)
    {
        Response.Write(k);
        Response.Write("<br>");
    }
İleri düzeylerde serialize & deserialize işlemleri;

Class nesne tanımlayıp serialize ederek, yazdırma;
    public class kullanicilar
    {
        public string adi { get; set; }
        public string soyadi { get; set; }
        public string email { get; set; }
    }

    public void yazdir()
    {
        kullanicilar kul = new kullanicilar();
        kul.adi = "hasan";
        kul.soyadi = "çoban";
        kul.email = "hasan@hotmail.com";

        var json = JsonConvert.SerializeObject(kul);

        Response.Write(json);
    }

Çıktı ;

{"adi":"hasan","soyadi":"çoban","email":"hasan@hotmail.com"}
Eleman yapısını bildiğimiz string değeri class yapısına çevirme ;

public class kullanicilar
    {
        public string adi { get; set; }
        public string soyadi { get; set; }
        public string email { get; set; }
    }

    public void yazdir()
    {
        string strVeri = "{\"adi\":\"hasan\",\"soyadi\":\"çoban\",\"email\":\"hasan@hotmail.com\"}";
        kullanicilar kul = JsonConvert.DeserializeObject<kullanicilar>(strVeri);

        Response.Write(kul.adi);
    }

Liste tipinde class örnek ;

    public class kullanicilar
    {
        public string adi { get; set; }
        public string soyadi { get; set; }
        public string email { get; set; }
    }

    public void yazdir()
    {
        List<kullanicilar> liste = new List<kullanicilar>();
        liste.Add(new kullanicilar() { adi = "hasan", soyadi = "çoban", email = "aslan@mail.com" });
        liste.Add(new kullanicilar() { adi = "kenan", soyadi = "çelik", email = "kedi@mail.com" });
        liste.Add(new kullanicilar() { adi = "osman", soyadi = "şahin", email = "sahin@mail.com" });

        var j = JsonConvert.SerializeObject(liste);

        Response.Write(j);
    }

Çıktı;

[{"adi":"hasan","soyadi":"çoban","email":"aslan@mail.com"},{"adi":"kenan","soyadi":"çelik","email":"kedi@mail.com"},{"adi":"osman","soyadi":"şahin","email":"sahin@mail.com"}]