为什么 JsonConvert.SerializeObject 将 /u000 和其他随机转义字符放入我的序列化中

问题描述

我正在从注册表读取所有已安装的软件。它在所有经过测试的计算机上都运行良好,但出现以下问题的计算机除外。

它正确地从注册表中读取数据并将正确的数据放入类的正确字段中。 我输入了很多 MessageBox.Show() 命令来查看返回的内容,而且看起来都是正确的。

regKey 的显示名称 = Foxit Reader

卸载字符串 = C:\Program Files (x86)\Foxit Software\Foxit Reader\Uninstall.exe

当我将值(在 C# 中)发送消息框时,我得到了这个,但是当我将 JsonConvert.SerializeObject 转换为对象时

    public int ID { get; set; }

    public int AssetID { get; set; }

    public string displayName { get; set; }

    public string displayVersion { get; set; }

    public string Publisher { get; set; }

    public string RegKey { get; set; }

    public string UninstallString { get; set; }

    public string InstallDate { get; set; }

    public bool IsActive { get; set; }

它最终看起来像这样:

{"ID":0,"AssetID":7,"displayName":"Foxit Reader\u0000\u0000\u0000\u0000\\Microso","displayVersion":"0.0.0.0","Publisher":null,"RegKey":"Foxit Reader","UninstallString":"C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Uninstall.exe\u0000Fox-Ä~vÊ\u0000\u000f¦\u0000\u0000\u0010\u0000üú\u0018\u0000¼þ\u0018\u0000\u0010«¯v\u0001\u0000\u0000\u0000¬ž|vÎ|vÄû\u0018\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000€\u001a\u0000\u0000","InstallDate":"Jan 1 1980","IsActive":true} 

我已经把以下内容

        // Encrypt the class
        var serializerSettings = new JsonSerializerSettings();
        serializerSettings.StringEscapeHandling = StringEscapeHandling.EscapeNonAscii;


        string serializedClass = JsonConvert.SerializeObject(this,serializerSettings);

代码就位(之前它只是:

string serializedClass = JsonConvert.SerializeObject(this);

我能做些什么来摆脱所有的垃圾?当我将此传递给我的 API 以插入数据库时​​,我收到无效格式错误

任何帮助将不胜感激。 提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)