有没有办法在C#中(反)序列化动态列表?

时间:2019-09-09 14:49:46

标签: c# .net serialization deserialization

我试图对包含字符串和对象的列表进行反序列化。我想将列表反序列化为自定义对象。

这是我要反序列化的对象

"permission": [
                 "Group1",
                 "Group2",
                 {
                   "PermissionName" : "QA",
                   "Namespace" : "NAmespace1",
                 }
              ]

我想知道是否有办法将此列表反序列化为c#中的自定义对象?

1 个答案:

答案 0 :(得分:0)

(p)(反)序列化只是将数据放入一种格式,以便其他进程或机器可以在以后重新构造相同的对象。如果像示例一样可以将对象放入JSON,那么您已经完成了。只需在另一端进行反序列化即可。 XML和其他格式也可以工作。

自定义和某些内置对象默认情况下不进行序列化的原因是它们包含其使用或解释是系统特定的数据,例如时间(按时区不同地解释),指针或网络连接对象(系统)具体)。对于只是简单类型列表的自定义对象,您可以仅通过JSON或XML发送它。

或者,您可以用Serializable attribute进行标记,并使用内置库进行传输。通常,C#会在没有此属性的情况下将序列化一切都很好,但是添加它会为您提供编译器警告,可帮助确保您的对象可完全序列化。另请参见此答案https://stackoverflow.com/a/5877839/3626160