[SugarColumn(IsJson = true)] 不支持UNICODE字符串 返回
在实体类中以 [SugarColumn(IsJson = true)] 方式json序列化存储对象时,如果对象属性包含非ANSI字符串,写入数据库的json字符串结构没问题,但是unicode字符串属性的值是一大堆问号。数据库字段确定是nvarchar类型,应该是序列化对象方法不支持unicode字符串或者写入那一块缺少类似N"value"的方法。
![]()
热忱回答(8)
-
fate stay night VIP0
2020/10/7sqlsugar序列化是用的json.net 你可以找找json.net的一些配置
0 回复 -
777 VIP0
2020/10/7@fate stay night:我用Db.Aop.OnLogExecuted = (sql, pars) =>{} 调试,最终生成的sql语句没问题,应该是最终写入那一块缺少N"value"方式的unicode编码转换。
再说我经常使用JsonConvert.SerializeObject(object)和
JsonConvert.DeserializeObject<Model>(jsonStr)方式序列化和反序列化对象,我确定json.net没有问题。
0 回复 -
fate stay night VIP0
2020/10/7那你要发你的代码给你看,你C#是如何写的
0 回复 -
fate stay night VIP0
2020/10/7是插入还是查询
0 回复 -
777 VIP0
2020/10/7插入
0 回复 -
777 VIP0
2020/10/7class Alog
{
public string id {get;set;}
public DateTime indate {get;set;}
[SugarColumn(IsJson = true)]
public List<Model> modelslist {get;set;}
}
class Model
{
public string name_cn {get;set;}
public string name_ar {get;set;}
public int qty {get;set;}
}
我不使用IsJson=true提前下,Allog.modelslist = JsonConvert.SerializeObject(List<model>),这样是没问题。但是我得建两个Alog类,一个是用来存储的,其modelslist属性是string,另一个是用来业务处理的,其modelslist属性是List<Model>,这样非常麻烦。
[SugarColumn(IsJson = true)] 这功能非常实用。我就少建一个类,而且不用管序列化问题,ORM帮我完成的。
但是正好Model.name_ar 这个属性是阿拉伯文,而且我前端接收到的是Alog整个对象的json。这就导致写入数据库的Alog.modelslist.name_cn那一块是乱码。
0 回复 -
777 VIP0
2020/10/7@777:最后写错了,是Alog的modelslist字段里存储的json字符串name_ar是乱码(问号)。
0 回复 -
fate stay night VIP0
2020/10/8解释不清楚的问题写一个控制台demo发我吧
0 回复