c# - .NET 对象最灵活的序列化是什么,但实现起来很简单?

标签 c# .net json serialization json.net

我想序列化和反序列化对象,而不必担心整个类图。

灵 active 是关键。我希望能够序列化传递给我的任何对象,而无需整个对象图中所需的完整属性。

That means that Binary Serialization is not an option as it only works with the other .NET Platforms. I would also like something readable by a person, and thus decipherable by a management program and other interpreters.

我在使用 DataContract、JSON 和 XML 序列化程序时发现了问题。

  • 这些错误中的大多数似乎都围绕列表/字典的序列化(即 XML Serializable Generic Dictionary)。
  • "添加任何静态未知的类型 到已知类型的列表 - 对于 例如,通过使用 KnownTypeAttribute 属性或由 将它们添加到已知列表中 传递给的类型 DataContractSerializer。”

请根据实际经验而不是理论或阅读文章来回答。

最佳答案

您是否考虑过序列化为 JSON 而不是 XML?

Json.NET有一个非常强大和灵活的序列化程序,它对 Hashtables/通用字典没有问题,并且不需要任何特定的属性。我知道是因为我写的:)

它通过序列化程序上的各种选项为您提供大量控制,并允许您通过为其创建 JsonConverter 来覆盖类型的序列化方式。

在我看来,JSON 比 XML 更易于阅读,而 Json.NET 提供了编写格式良好的 JSON 的选项。

最后,该项目是开源的,因此您可以在需要时单步执行代码并进行修改。

关于c# - .NET 对象最灵活的序列化是什么,但实现起来很简单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/106599/

相关文章:

c# - 访问同一页面上另一个 Webcontrol 中的标签

c# - 如果从静态构造函数启动并等待,为什么空的 .NET 任务无法完成?

c# - 在 Linq .DBML 文件中重构表名和列名的简单方法?

objective-c - 网络请求失败 - NSURLSession - App Sandbox - Xcode 9

javascript - 如何将项目推送到 json 文件?

java - 如何将 'double' userLati、userLong 值和 String userName 传递给 Json 变量/对象

C# - 声明(不实现)接口(interface)实例的原因

c# - 开发游戏服务器的好语言?

c# - 如何从终结器中正确处理非托管资源的集合?

c# - CorfFlags 警告 CF011 关于强名称甚至在/force 之后签名