Veysel Uğur KIZMAZ

ASP.NET 5 Web API Json Verilerin Property İsimlerinin Baş Harfini Küçük Yapma

04.01.2016Okunma Sayısı: 5011Kategori: ASP.NET 5

C# ile uygulama geliştirirken class ve property isimlerini Microsoft standartlarına uygun olarak zaman büyük harfle başlatırız. Web API uygulamaları geliştirirken varsayılan ayarlar, sınıf özelliklerinin isimlerini olduğu gibi Json formatına dönüştürür. Örneğin müşterinin e-posta adresi için Email isimli bir property oluşturduysak, geliştireceğimiz varsayılan ayarlara sahip bir Web API uygulamasında Json formatında döndürülürken bu özellik yine Email olarak görünecektir. Döndüreceğimiz verilerin Javascript kütüphaneleri tarafından kullanılacağını düşündüğümüzde, Javascript’in isimlendirme standardı, isimlerin ilk kelimelerinin küçük harfle başlaması şeklindedir. Sonraki kelimelerin küçük ya da büyük harfle devam etmesi yazılım geliştiricinin alışkanlığına kalmış bir durum olsa da ilk harfin küçük olması, Javascript kodlamasındaki alışkanlıklar sebebiyle geliştiriciye kolaylık sağlayacaktır.

ASP.NET 5 Web API uygulamaları geliştirilirken tüm Json verilerinin property isimlerinin küçük harfle başlamasını sağlayabiliriz. Bunun için projenin başlangıç (Startup) ayarlarından Mvc servisini eklerken, Camel Case özellik isimleri ile ilgili Json seçeneğini (JsonOption) eklememiz gerekiyor.

Bir örnek uygulama üzerinde işlemlerimizi gerçekleştirelim.

Örnek Uygulama

Müşteri bilgilerini Web API ile almak için Customer isimli bir model oluşturalım.

public class Customer
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Country { get; set; }
    public string City { get; set; }
    public string Email { get; set; }
    public string Phone{ get; set; }
}

Modeli oluşturduktan sonra CustomerController isminde Web API controller sınıfını oluşturalım. Controller sınıfına müşteri bilgilerini Json formatında döndüren (geri dönüş tipi JsonResult olan) GetCustomers isimli bir metod ekleyelim. Metod içinde Customer listesinde dummy kayıtlar oluşturup Json formatında dönelim.

public class CustomerController : Controller
{
    [HttpGet("api/customers")]
    public JsonResult GetCustomers()
    {
        List<Customer> customerList = new List<Customer>();

        Customer ugur = new Customer()
        {
            Id = 1,
            FirstName = "Veysel Ugur",
            LastName = "KIZMAZ",
            Country = "Turkey",
            City = "Ankara",
            Email = "veysel@ugurkizmaz.com",
            Phone = "+900000000000"
        };
        customerList.Add(ugur);

        Customer baran = new Customer()
        {
            Id = 2,
            FirstName = "Baran Yağış",
            LastName = "KIZMAZ",
            Country = "Turkey",
            City = "Hatay",
            Email = "baranyagis@kizmaz.org",
            Phone = "+900000000001"
        };
        customerList.Add(baran);

        Customer nagihan = new Customer()
        {
            Id = 3,
            FirstName = "Nagihan",
            LastName = "YAGMUR",
            Country = "Turkey",
            City = "Malatya",
            Email = "nagihanyagmur@kizmaz.org",
            Phone = "+900000000002"
        };
        customerList.Add(nagihan);

        return Json(customerList);
    }
}

Kodlamayı tamamladıktan sonra Postman ile Web Api metodunu çağırdığımızda, dummy oluşturduğumuz kayıtların Json formatında geldiğini görebiliriz.

 

Şimdi, başta söylediğimiz ve makalemizin konusu olan noktaya geliyoruz. Json verisini incelediğimizde, verideki tüm propertylerin büyük harfle başladığını görüyoruz. İsimlendirmeyi küçük harfle başlatmak için, Startup sınıfında yer alan ve uygulamadaki servisleri yapılandırdığımız ConfigureServices metoduna eklenen MVC servisine AddJsonOptions servis yapılandırma metodu ile Json seçeneklerini ekleyeceğiz.

Büyük – küçük harf yapılandırması için Newtonsoft.Json.Serialization namespacei içinde bulunan CamelCasePropertyNamesContractResolver sınıfını kullanacağız.

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddMvc()
        .AddJsonOptions(option =>
            {
                option.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
            });
}

Ayarları tanımladıktan sonra projeyi yeniden derledikten sonra çalıştırıp verileri sorguladığınızda propertylerin ilk karakterlerinin küçük harfle başladığını göreceksiniz.