nasıl

2011-12-26 5 views
21

Birisinasıl

ben JSON.NET ISODateConvertor kullanabilirsiniz biliyorum özel dönüştürücü oluşturabilir lütfen nasıl söyler misiniz Dize özel Converter bir JSON.NET Tarihi oluşturmak, ama ne istediğim özeldir için sadece Değeri yanıt olarak "gün/ay/yıl" dizesi olarak göndermek istiyorum.

+1

L.B. cevabı ne için sorulan verir, ama bu nasıl kullandığınız hakkında çok dikkatli olun. ISO tarihlerini kullanmamızın nedeni, açık ve kültürel değişmez olmalarıdır. Değerlerinizi gün/ay/yıl olarak gönderirseniz, "1/4/2013" gibi bir değer söyleyin - Yerel ayarınızın farkında olmayan biri, 1 Nisan yerine, 4 Ocak olarak yorumlayabileceğini düşündürebilir. –

+0

@Matt Johnson, yanıtınız için teşekkürler, tamamen size katılıyorum% 100. Bu eski bir iş parçacığı ve ben sadece şimdi ISO tarihini kullanın ve istemcide işlemek :) – DevMania

cevap

39

Böyle bir şey mi var?

string str = JsonConvert.SerializeObject(new DateTimeClass(), new MyDateTimeConvertor()); 

public class DateTimeClass 
{ 
    public DateTime dt; 
    public int dummy = 0; 
} 

public class MyDateTimeConvertor : DateTimeConverterBase 
{ 
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
    { 
     return DateTime.Parse(reader.Value.ToString()); 
    } 

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
    { 
     writer.WriteValue(((DateTime)value).ToString("dd/MM/yyyy")); 
    } 
} 
+0

Çok teşekkürler Man, ama ben ReadJson yöntemi uygulanmadı hakkında bir hata alıyorum – DevMania

+0

Sadece d gibi değer göndermek istiyorum "gün/ay/yıl" dize yanıt "Ben sadece WriteJson' –

+0

adam çok teşekkürler, çalışıyor, ama ben her zaman sonuç olarak 01/01/0001 olsun, örneğin benim DB kayıt tarihi örneğin, 2011 -12-27T13: 13: 45.7052459Z " – DevMania

8

Web Api kullanarak yapılandırmaya özel biçimlendirici eklemek kullanıyorsanız:

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new MyDateTimeConvertor()) 
+0

benim için harika! Bu dönüştürücüyü genel yapılandırmada (WebApiConfig) eklediğinizden emin olun, yardım alanında değil (HelpPageConfig) –