someDateTime
フィールドが時間なしでフォーマットされ、他のDateTime
フィールドが時間付きでフォーマットされるように、JSON.NETを構成する簡単な方法はありますか?
例:
{ firstName: 'John', lastName : 'Doe', birthday: '1965-09-23' }
特定のフィールドにのみ影響を与えるためにこれが必要な場合は、最初にコンバータタイプを作成します。
public class OnlyDateConverter : IsoDateTimeConverter
{
public OnlyDateConverter()
{
DateTimeFormat = "yyyy-MM-dd";
}
}
次に、この属性を必要なフィールド/プロパティに追加します。
[JsonConverter(typeof(OnlyDateConverter))]
次の行を追加して、WebAPIを構成してみてください。
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" });
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ライブラリをクラスにバインドする必要はありません。
短所-プロパティは、使用するすべての場所で文字列として公開されるようになりました。これにより、独自の問題が発生する可能性があります。