55 lines
1.5 KiB
C#
55 lines
1.5 KiB
C#
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<ObjectId>
|
|
{
|
|
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<List<string>>
|
|
{
|
|
public override List<string> ReadJson(JsonReader reader, Type objectType, List<string> existingValue, bool hasExistingValue, JsonSerializer serializer)
|
|
{
|
|
// 处理空值的情况
|
|
if (reader.TokenType == JsonToken.Null)
|
|
return new List<string>();
|
|
|
|
// 使用默认的 List<string> 反序列化
|
|
return serializer.Deserialize<List<string>>(reader);
|
|
}
|
|
|
|
public override void WriteJson(JsonWriter writer, List<string> value, JsonSerializer serializer)
|
|
{
|
|
// 序列化时将空的 List<string> 转换为 null
|
|
if (value == null || value.Count == 0)
|
|
writer.WriteNull();
|
|
else
|
|
serializer.Serialize(writer, value);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|