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.