This commit is contained in:
sunkaixuan
2025-07-02 16:21:42 +08:00
parent 9940bfa877
commit db797c2482

View File

@@ -60,9 +60,25 @@ namespace SqlSugar.MongoDb
// 再用 BsonSerializer 反序列化为 T // 再用 BsonSerializer 反序列化为 T
return BsonSerializer.Deserialize(bsonDoc, type); return BsonSerializer.Deserialize(bsonDoc, type);
} }
else if (json is List<object> list0&&list0.Any()&& list0.FirstOrDefault() is Dictionary<string,object>)
{
Type elementType = type.GetGenericArguments()[0];
var resultList = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(elementType));
BsonArray bsonArray = new BsonArray();
foreach (Dictionary<string,object> item in list0)
{
var bsonDoc = new BsonDocument();
foreach (var kvp in item)
{
bsonDoc.Add(kvp.Key, BsonValue.Create(kvp.Value));
}
resultList.Add(BsonSerializer.Deserialize(bsonDoc, elementType));
}
return resultList;
}
else if (json is List<object> list) else if (json is List<object> list)
{ {
string jsonStr = System.Text.Encoding.UTF8.GetString(list.Select(it=>Convert.ToByte(it)).ToArray()); string jsonStr = System.Text.Encoding.UTF8.GetString(list.Select(it => Convert.ToByte(it)).ToArray());
// 2. 解析为 BsonArray // 2. 解析为 BsonArray
var bsonArray = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonArray>(jsonStr); var bsonArray = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonArray>(jsonStr);
@@ -78,8 +94,8 @@ namespace SqlSugar.MongoDb
var doc = item.AsBsonDocument; var doc = item.AsBsonDocument;
var obj = BsonSerializer.Deserialize(doc, elementType); var obj = BsonSerializer.Deserialize(doc, elementType);
resultList.Add(obj); resultList.Add(obj);
} }
return resultList; return resultList;
} }
else else
{ {