2

我正在使用 .net datacontractjsonserializer 将我的对象列表序列化为 JSON 字符串,但是我不想序列化某些公共属性,如何防止 datacontractjsonserializer 序列化这些属性?

谢谢

4

2 回答 2

6

使用 .NET 序列化程序进行序列化时有两种方法:

属性白名单:

这是推荐的方法。您使用属性显式标记您的类DataContract。这样,只有用该属性标记的DataMember属性才会包含在输出中。

与其做一个你不想序列化的属性的黑名单,不如做一个白名单并标记你想要序列化的所有属性。这更安全,因为它要求开发人员在引入新属性时明确声明他们希望对属性进行序列化。

属性黑名单:

如果你真的想做黑名单,你可以使用IgnoreDataMember别人指出的属性。在这种情况下,您不需要(也不应该)用DataContract属性标记您的类。相反,您使用 标记要排除的属性IgnoreDataMember

我希望这有助于解释这些选择及其优缺点。

编辑:扩展我的答案

于 2012-04-03T11:30:31.943 回答
2

有两种选择,我能想到。

1- 在属性上尝试使用 [IgnoreDataMember] 属性。

2 - 不要用 [DataMember] 属性标记您的属性。

希望能帮助到你

于 2012-04-03T11:31:27.520 回答