web-dev-qa-db-ja.com

ASP.NET Web APIJSON出力の時間のない日付

someDateTimeフィールドが時間なしでフォーマットされ、他のDateTimeフィールドが時間付きでフォーマットされるように、JSON.NETを構成する簡単な方法はありますか?

例:

{ firstName: 'John', lastName : 'Doe', birthday: '1965-09-23' }
32
RooSoft

特定のフィールドにのみ影響を与えるためにこれが必要な場合は、最初にコンバータタイプを作成します。

public class OnlyDateConverter : IsoDateTimeConverter
{
    public OnlyDateConverter()
    {
        DateTimeFormat = "yyyy-MM-dd";
    }
}

次に、この属性を必要なフィールド/プロパティに追加します。

[JsonConverter(typeof(OnlyDateConverter))]
55

次の行を追加して、WebAPIを構成してみてください。

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
    new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" });
4

OnlyDateConverterを使用したYousesefの回答が最適です。しかし、ここに1つの選択肢があります。

private DateTime _birthday;
public string Birthday
{
    get { return _birthday.ToString("yyyy-MM-dd"); }
    set {
          _birthday = DateTime.ParseExact(value, "yyyy-MM-dd",
                                          CultureInfo.InvariantCulture);
        }
}

利点-Newtonsoft.Jsonライブラリをクラスにバインドする必要はありません。

短所-プロパティは、使用するすべての場所で文字列として公開されるようになりました。これにより、独自の問題が発生する可能性があります。

0