предотвратить сериализацию свойства с помощью datacontractjsonserializer C # - PullRequest
2 голосов
/ 03 апреля 2012

Я использую .net datacontractjsonserializer для сериализации моего списка объектов в строку JSON, но есть определенные общедоступные свойства, которые я не хочу сериализовать, как предотвратить сериализацию этих свойств datacontractjsonserializer?

Спасибо

Ответы [ 2 ]

6 голосов
/ 03 апреля 2012

Существует два подхода к сериализации с помощью сериализаторов .NET:

Белый список свойств:

Это рекомендуемый подход.Вы явно помечаете свой класс атрибутом DataContract.При этом в вывод будут включены только свойства, помеченные атрибутом DataMember.

Вместо того, чтобы создавать черный список свойств, которые вы не хотите сериализовать, лучше сделать белыйперечислите и отметьте все свойства, которые вы хотите сериализовать.Это более безопасно, поскольку требует, чтобы разработчик явно заявлял, что он хочет, чтобы свойство было сериализовано при введении нового свойства.

Черный список свойств:

Если вы действительно хотите сделать черный список, вы можете использовать атрибут IgnoreDataMember, как указано другими.В этом случае вам не нужно (и не следует) отмечать свой класс атрибутом DataContract.Вместо этого вы помечаете свойства, которые вы хотите исключить, с помощью IgnoreDataMember.

Я надеюсь, что это поможет немного объяснить варианты и их преимущества / недостатки.

Редактировать: Расширенный мой ответ

2 голосов
/ 03 апреля 2012

Я могу придумать два варианта.

1- В свойстве попробуйте использовать атрибут [IgnoreDataMember].

2 - Не отмечайте вашу собственность атрибутом [DataMember].

Надеюсь, это поможет

...