DateTime Alan İçeren Nesneye Sahip WebApi Metodu Çağırma | C#

Merhaba, bir WebApi metodunuz var. Parametre olarak aldığı nesnede bir DateTime türünde alan var.
Bu metodu tetiklediğinizde gönderdiğiniz nesnenin NULL olarak gittiğine şahit olursanız eğer, problem yüksek ihtimalle tarih alanından kaynaklıdır.
Teyit için gönderdiğiniz nesnedeki tarih alanını kapatıp tekrar tetikleyebilirsiniz.
Sonuç pozitifse çözüm şu şekilde:

Aşağıdaki gibi bir attribute oluşturup ilgili metodun olduğu Controller sınıfının tepesine yerleştiriyoruz.

public class OzelTarihFormatAttribute : Attribute, IControllerConfiguration
    {
        public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
        {
            var formatter = controllerSettings.Formatters.JsonFormatter;
            controllerSettings.Formatters.Remove(formatter);
            formatter = new JsonMediaTypeFormatter
            {
                SerializerSettings = {
                    DateFormatString="dd.MM.yyyy HH:mm"
                }
            };
            controllerSettings.Formatters.Insert(0, formatter);
        }
    }

Peki ilgili metodu çağırdık, o da bize tarih içeren bir nesne dönüyor diyelim. Bu sefer de çağıran taraf da bir şeyler yapmamız gerek.

string sonucJsonStr = "WebApi'den dönen ve içerisinde DateTime türünde alan barındırından Json string değeri";
var serializeSettings = new JsonSerializerSettings();
serializeSettings.Converters.Add(new IsoDateTimeConverter() { DateTimeFormat = "dd.MM.yyyy HH:mm" });
List<Personel> lstPersonel = JsonConvert.DeserializeObject<List<Personel>>(sonucJsonStr, serializeSettings);

Selamlar.

Leave a Reply

Your email address will not be published. Required fields are marked *