webapi + EF 框架 解决Json返回日期显示带T
时间: 2023-12-13 08:03:38 浏览: 164
json显示日期带T问题的解决方法
在使用 WebAPI 和 EF 框架时,如果返回的 JSON 数据中包含日期属性,其格式往往会带有 T 字符。这是因为 .NET 中默认的日期格式是 ISO 8601 标准格式,它包含一个 T 字符,用于分隔日期和时间。
要解决这个问题,有两种方法:
方法一:修改日期格式
可以在 WebAPI 的配置中设置全局的日期格式,从而修改返回的 JSON 数据中日期的格式。具体操作如下:
1.在 Global.asax.cs 文件中的 Application_Start 方法中添加以下代码:
```csharp
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
```
2.在上述代码中,我们将日期格式设置为 "yyyy-MM-dd HH:mm:ss",这样返回的 JSON 数据中日期的格式就不再带有 T 字符。
方法二:使用自定义 JsonConverter
如果我们只想针对某个特定的实体类或属性,来修改返回的 JSON 数据中日期的格式,可以使用自定义的 JsonConverter。具体操作如下:
1.创建一个继承自 JsonConverter 的类,重写 ReadJson 和 WriteJson 方法,实现对日期格式的转换。
```csharp
public class DateTimeConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(DateTime);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.Value == null)
{
return null;
}
return DateTime.Parse(reader.Value.ToString());
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((DateTime)value).ToString("yyyy-MM-dd HH:mm:ss"));
}
}
```
2.在实体类或属性上添加 [JsonConverter] 属性,指定使用自定义的 JsonConverter。
```csharp
public class User
{
public int Id { get; set; }
public string Name { get; set; }
[JsonConverter(typeof(DateTimeConverter))]
public DateTime RegisterTime { get; set; }
}
```
这样返回的 JSON 数据中,RegisterTime 属性的日期格式就不再带有 T 字符了。
阅读全文