我正在从注册表中读取所有已安装的软件。它在所有经过测试的计算机上都能正常工作,除了一台给我带来以下问题的计算机。
它正确地从注册表中读取数据并将正确的数据放入类的正确字段中。我放了很多 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 以插入数据库时,我收到了无效的格式错误。
任何帮助,将不胜感激。提前致谢。