自定义类型,在Select时Json反序列化不正确 返回

SqlSugar
548
该叫什么 waite 发布于2025/10/21
悬赏:0 飞吻

比如 A, StringStatus 类型为自定义个类,想实现 string类型的强类型Enum。


public class A{

    public StringStatus? DispatchStatus { get; set; }

}


已经为 StringStatus 类添加了自定义的 NewtonJson Converter 和 ISugarDataConverter;正常查询ToListAsync()是可以的,但是添加了用了 Select 就会反序列化错误。


db.Queryable<A>().ToListAsync(); //正常

db.Queryable<A>().Select(a =>new{a.A}).ToListAsync(); //错误


追了下源码,使用Select后会进行Json的序列化与反序列化,在DataTable中数据序列化成string时,DispatchStatus 会变成 "{}".  ISerializeService DeserializeObject中的value参数实际类似于这样,数据库中值是 正确的,比如"OK"等


{"Property1":"xxx","Property2":"xxx","Id":"730427571875909","DispatchStatus":{}}

image.png
再次序列化时 无法变成StringStatus类型



这个是个string类型枚举的基类


image.png


热忱回答0