2011-12-26 13 views
21

にJSON.NET日を作成するために誰かが私はカスタムコンバータどのように文字列のカスタムコンバータ

を作成する方法を私にしてください教えてもらえ私はJSON.NET ISODateConvertorを使用することができます知っているが、私がしたいことは、特定のある、ちょうど私応答時に "日/月/年"文字列として値を送信したい。

+1

L.B.の答えはあなたが尋ね、あなたに与えていますが、これを使用する方法については非常に注意してください。 ISOの日付を使用するのは、それらが明白で文化的に不変であるためです。あなたの値を日/月/年として送る場合、 '1/4/2013'のような値を言う - あなたのロケールを知らない人は、あなたが意図した4月1日ではなく、1月4日と解釈するかもしれません。 –

+0

@Matt Johnson、返事ありがとう、私はあなたに100%合意しています。これは古いスレッドであり、私はISOの日付を使用してクライアントで操作します:) – DevMania

答えて

39

これは何か?

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

ありがとうございます。しかし、ReadJsonメソッドが実装されていないというエラーが表示されています。 – DevMania

+0

「私はちょうど私は 'WriteJson' –

+0

の人に感謝しています、それは働いていますが、私はいつも01/01/0001を結果として得ます。例えば、私のDBレコードの日付は、例えば" 2011 -12-27T13:13:45.7052459Z " – DevMania

8

は、Web APIを使用している場合は使用した構成にカスタムフォーマッタを追加します。

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

は私にとって素晴らしいことです!このコンバーターをヘルプエリア(HelpPageConfig)ではなくグローバル設定(WebApiConfig)に追加してください。 –

関連する問題