using MongoDB.Bson; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Admin.NET.Core; public class ObjectIdConverter : JsonConverter { public override ObjectId ReadJson(JsonReader reader, Type objectType, ObjectId existingValue, bool hasExistingValue, JsonSerializer serializer) { if (reader.Value is string value && ObjectId.TryParse(value, out var objectId)) { return objectId; } return existingValue; } public override void WriteJson(JsonWriter writer, ObjectId value, JsonSerializer serializer) { writer.WriteValue(value.ToString()); } } // 自定义 JsonConverter public class CustomListConverter : JsonConverter> { public override List ReadJson(JsonReader reader, Type objectType, List existingValue, bool hasExistingValue, JsonSerializer serializer) { // 处理空值的情况 if (reader.TokenType == JsonToken.Null) return new List(); // 使用默认的 List 反序列化 return serializer.Deserialize>(reader); } public override void WriteJson(JsonWriter writer, List value, JsonSerializer serializer) { // 序列化时将空的 List 转换为 null if (value == null || value.Count == 0) writer.WriteNull(); else serializer.Serialize(writer, value); } }