[SugarColumn(IsJson = true)] 不支持UNICODE字符串 返回

反馈
8 197
该叫什么 777 发布于2周前
悬赏:0 飞吻

    在实体类中以 [SugarColumn(IsJson = true)]  方式json序列化存储对象时,如果对象属性包含非ANSI字符串,写入数据库的json字符串结构没问题,但是unicode字符串属性的值是一大堆问号。数据库字段确定是nvarchar类型,应该是序列化对象方法不支持unicode字符串或者写入那一块缺少类似N"value"的方法。

image.png

热忱回答8

  • sqlsugar序列化是用的json.net 你可以找找json.net的一些配置

    0 回复
  • 777 777 VIP0
    2周前

    @fate stay night:我用Db.Aop.OnLogExecuted = (sql, pars) =>{} 调试,最终生成的sql语句没问题,应该是最终写入那一块缺少N"value"方式的unicode编码转换。

    再说我经常使用JsonConvert.SerializeObject(object)和

    JsonConvert.DeserializeObject<Model>(jsonStr)方式序列化和反序列化对象,我确定json.net没有问题。

    0 回复
  • 那你要发你的代码给你看,你C#是如何写的

    0 回复
  • 是插入还是查询

    0 回复
  • 777 777 VIP0
    2周前

    插入

    0 回复
  • 777 777 VIP0
    2周前

    class 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 777 VIP0
    2周前

    @777:最后写错了,是Alog的modelslist字段里存储的json字符串name_ar是乱码(问号)。

    0 回复
  • 解释不清楚的问题写一个控制台demo发我吧

    0 回复

版块

学习文档

最新会员

发布达人

回贴达人