温馨提示×

C# json序列化可以自定义吗

c#
小樊
217
2024-07-19 13:14:43
栏目: 编程语言

是的,C#中的Json序列化可以通过自定义JsonConverter来实现自定义序列化和反序列化逻辑。可以继承JsonConverter类,并重写其方法来实现自定义逻辑。以下是一个简单的示例:

using Newtonsoft.Json; using System; public class CustomDateTimeConverter : JsonConverter { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { if (value is DateTime dateTime) { writer.WriteValue(dateTime.ToString("yyyy-MM-dd HH:mm:ss")); } } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.Value is string dateTimeString) { if (DateTime.TryParseExact(dateTimeString, "yyyy-MM-dd HH:mm:ss", null, System.Globalization.DateTimeStyles.None, out DateTime dateTime)) { return dateTime; } } return existingValue; } public override bool CanConvert(Type objectType) { return objectType == typeof(DateTime); } } 

然后,可以在Json序列化时指定使用自定义的JsonConverter:

var settings = new JsonSerializerSettings(); settings.Converters.Add(new CustomDateTimeConverter()); var json = JsonConvert.SerializeObject(dateTimeValue, settings); var deserializedDateTime = JsonConvert.DeserializeObject<DateTime>(json, settings); 

这样就可以实现对DateTime类型的自定义序列化和反序列化逻辑。

0