.net JsonConvert 序列化时间 自定义格式
时间: 2024-04-15 07:31:41 浏览: 18
您可以使用JsonConvert类中的SerializeObject方法来序列化.NET对象,并通过JsonSerializerSettings类来设置自定义的时间格式。
以下是一个示例代码,将DateTime类型的时间序列化为自定义的格式:
```csharp
using Newtonsoft.Json;
using System;
public class CustomDateTimeConverter : JsonConverter<DateTime>
{
private const string DateFormat = "yyyy-MM-dd HH:mm:ss";
public override void WriteJson(JsonWriter writer, DateTime value, JsonSerializer serializer)
{
writer.WriteValue(value.ToString(DateFormat));
}
public override DateTime ReadJson(JsonReader reader, Type objectType, DateTime existingValue, bool hasExistingValue, JsonSerializer serializer)
{
if (DateTime.TryParse(reader.Value.ToString(), out DateTime result))
{
return result;
}
return existingValue;
}
}
public class MyClass
{
[JsonConverter(typeof(CustomDateTimeConverter))]
public DateTime MyDateTime { get; set; }
}
public class Program
{
public static void Main()
{
var obj = new MyClass { MyDateTime = DateTime.Now };
var settings = new JsonSerializerSettings
{
DateFormatString = "yyyy-MM-dd HH:mm:ss"
};
var json = JsonConvert.SerializeObject(obj, settings);
Console.WriteLine(json);
var deserializedObj = JsonConvert.DeserializeObject<MyClass>(json);
Console.WriteLine(deserializedObj.MyDateTime);
}
}
```
在上面的示例中,我们首先创建了一个自定义的JsonConverter类CustomDateTimeConverter,用于将DateTime类型的时间序列化为指定的格式。接着,在MyClass类中使用了JsonConverter特性来应用这个自定义的转换器。
在Main方法中,我们创建了一个MyClass对象,并通过JsonConvert.SerializeObject方法将其序列化为JSON字符串。同时,我们还使用了JsonSerializerSettings来设置日期格式为"yyyy-MM-dd HH:mm:ss"。然后,我们输出了序列化后的JSON字符串。
接着,我们使用JsonConvert.DeserializeObject方法将JSON字符串反序列化为MyClass对象,并输出反序列化后的DateTime属性。
请注意,上述示例使用了Newtonsoft.Json库,您需要在项目中安装该库才能使用相关的类和方法。