【问题标题】:Convert JSON object to Object without using Serialization in .NET Core在 .NET Core 中不使用序列化将 JSON 对象转换为对象
【发布时间】:2018-01-02 15:37:50
【问题描述】:

有什么方法可以将 JSON 对象转换为自定义对象而不使用 .NET core 1.0 中的序列化。由于我使用的是 .net framework 4.5 构建的 dll,并且其中定义的模型带有 [Serialize] 属性。因此,当我尝试将 JSON 字符串转换为对象时,我遇到了以下错误:

无法加载文件或程序集'System.Runtime.Serialization, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089'。 系统找不到指定的文件。

dll 内部是指其中的序列化类。 我用来转换为对象的代码sn-p

public void ConvertToObject(string jsonString)
{
   return JsonConvert.DeserializeObject<CustomObject>(json);
   //This line throws error
}

我认为问题只是因为[Serialize]属性,但我们没有控制修改提供的dll。而且我们只需要坚持使用 NET Core 1.0。我已经在 Core 2.0 和它的工作中尝试过它。

【问题讨论】:

  • 将 JSON 字符串转换为对象的过程称为“序列化”,所以,不,没有序列化是没有办法的。如果您无权访问引用 [Serialize] 的代码,那么如果您想坚持使用 .NET Core 1,则无法使用该代码。
  • 从字符串表示到内存中程序对象的转换通常称为序列化。所以这个问题没有任何意义,真的。无论如何,尝试将 DLL 用于完全不同的 .NET 版本(Core 与经典框架)并不是一个好主意。

标签: c# .net json serialization asp.net-core-1.0


【解决方案1】:

在 .Net Core 项目中加载引用的 dll 时出现混乱(不确定它是否已在 Core 2.0 中修复)。尝试为您正在运行的最顶级项目添加对 System.Runtime.Serialization dll 的引用。例如。你有以下结构:

(a) Web 应用程序 (ASP.Net Core) ==> (b) .Net Core DLL ==> (c) .Net 4.5 dll 其中 (c) 是带有 Serialize 属性的 dll

为 (a) 添加对 System.Runtime.Serialization 的引用 注意:添加对 (b) 的引用也可能会有所帮助,但如果您有更深的解决方案结构并且有其他引用 (b) 的项目,它可能会再次中断,因此您可以选择顶级项目

【讨论】:

  • 感谢您的回答。我试过了,但没有用..同样的问题。
  • 检查你的 bin 文件夹,如果有 System.Runtime.Serialization.dll。如果有,检查它的版本,你需要 4.0.x(目前我有 4.0.3)。如果找到4.3版本,看看哪个项目需要这个dll
  • 如果bin里没有dll,试试手动放,看看有没有用。如果是这样,请再次检查您在顶级项目中是否有正确的参考
  • 没用。仍然得到同样的错误。似乎核心项目没有导入序列化 dll。即使我尝试使用汇编类代码手动加载,但它没有工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 2015-07-31
  • 2014-03-07
  • 2019-07-03
  • 2013-07-25
相关资源
最近更新 更多