Json Serialize, Deserialize ve Tür dönüşümleri

Merhaba arkadaşlar,

Bu makalemizde json ne demektir, tür dönüşümleri,Dictionary<T> dönüşümlerini anlatacağım.

Json Java tabanlı XML gibi içerik kategorileme dilidir.  XML' e göre avantajı  açıp kapanan tagların yerine sadece bir başlıkda yazılması ve kapasite tasarrufu sağlanmasıdır. JavaScript Object Notatin anlamına gelmektedir.

{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}


Bu Json verisinin Xml karşılığı aşağıdaik gibidir. 

<menu id="file" value="File">
  <popup>
    <menuitem value="New" onclick="CreateNewDoc()" />
    <menuitem value="Open" onclick="OpenDoc()" />
    <menuitem value="Close" onclick="CloseDoc()" />
  </popup>
</menu>


Buradan örnek dönüşleri inceleyebilirsiniz.
Örnek bir c# projesi yapalım...

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace JsonProcess
{
    class Program
    {
        static void Main(string[] args)
        {
            Product p1 = new Product
            {
                Name = "Ürün 1",
                Price = 99.95m,
                ExpiryDate = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc),
                Sizes = new string[] { "Small", "Medium", "Large" }
            };
            Product p2 = new Product
            {
                Name = "Ürün 2",
                Price = 12.50m,
                ExpiryDate = new DateTime(2009, 7, 31, 0, 0, 0, DateTimeKind.Utc),
                Sizes = new string[] { "Small", "Medium"}
            };

            List<Product> products = new List<Product>();
            products.Add(p1);
            products.Add(p2);


            //Formatting.Indented satır başı yapar.
            //Bu Formating enumu Xml kütüphanesinde de olduğu için ben uzun yazdım..

            string json = JsonConvert.SerializeObject(products, Newtonsoft.Json.Formatting.Indented);
            Console.WriteLine(json);
            List<Product> productsDonusum = JsonConvert.DeserializeObject<List<Product>>(json);
            Console.WriteLine(products.Count);
            Product urun1 = products[0];
            Console.WriteLine(p1.Name);


            string json2 = @"{""key1"":""value1"",""key2"":""value2""}";
            Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
            Console.WriteLine(values.Count);
            Console.WriteLine(values["key1"]);
        }
    }

    public class Product
    {
        public string Name { get; set; }
        public decimal Price { get; set; }

        public DateTime ExpiryDate { get; set; }

        public string[] Sizes { get; set; }
    }
}

Ayrıca mvc projelerinde modelden gelen bir bilgiyi knockout teknolojisinde şu şkilde dönüşümlerde yapabilriz.

this.IsActive = ko.observable(@Html.Raw(Json.Encode(@Model.IsActive)))

 

Bir sonraki yazımda görüşmek üzere hoşçakalınız.

Add comment

The file '/Custom/Widgets/Calendar/widget.cshtml' does not exist.The file '/Custom/Widgets/Category list/widget.cshtml' does not exist.The file '/Custom/Widgets/Tag cloud/widget.cshtml' does not exist.The file '/Custom/Widgets/Page List/widget.cshtml' does not exist.The file '/Custom/Widgets/Month List/widget.cshtml' does not exist.