36

是否有一种简单的方法来配置 JSON.NET,以便某些 DateTime字段将在没有时间的情况下进行格式化,而其他DateTime字段仍将随着时间进行格式化?

例子:

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

3 回答 3

68

如果您需要它只影响特定字段,请先创建一个转换器类型:

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

然后将此属性添加到您想要的任何字段/属性中:

[JsonConverter(typeof(OnlyDateConverter))]
于 2013-05-01T19:15:27.263 回答
4

尝试添加这一行来配置您的 Web API:

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
    new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" });
于 2013-05-01T18:39:17.300 回答
0

Yousesef 的回答OnlyDateConverter是最好的。但这里有一种选择:

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 库绑定到您的类。

缺点- 该属性现在在您使用它的任何地方都作为字符串公开,这可能会导致它自己的一系列问题。

于 2013-05-01T19:26:12.657 回答