Сериализатор JSON и объекты CSLA - PullRequest
1 голос
/ 01 сентября 2010

Мы только что начали новый проект ASP.Net, который использует веб-службы для сериализации некоторых бизнес-объектов CSLA в данные JSON для нашего клиентского кода javascript / JQuery. Изучив данные JSON в клиентском браузере (Firebug в Firefox), мы заметили, что существует значительное количество свойств бизнес-объекта, которые нам не нужно загружать в браузер.

Есть ли способ исключить свойства (кроме пометки их как частные) из сериализации JSON-сериализатором? Мы не вызываем JSONSerializer напрямую, а просто включили объявление ScriptMethod в WebMethod.

<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
<WebMethod()> _
Public Function getQuestions()

UPDATE Мы попытались предложить добавить атрибут в публичное свойство, но получили ошибку:

    Error 25 Attribute 'NonSerializedAtrribute' cannot be 
    applied to 'Name' because the attribute is not valid 
    on the is declaration type.

Теперь, если мы добавим NonSerialized в класс, он будет работать, но не на свойстве. Однако мы хотим, чтобы некоторые свойства были сериализованы.

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 06 сентября 2010

Вы должны использовать атрибут ScriptIgnore для всех свойств, которые не должны быть сериализованы.

Если вы решили выполнить дополнительную настройку сериализации данных, например, заменив одно имя свойства другим именем или преобразовав некоторые свойства в массив и т. Д., Вы можете написать небольшой JavaScriptTypeResolver , который это делает.

1 голос
/ 06 сентября 2010

ScriptIgnore должен выполнить за вас работу, предложенную Олегом. Проверьте эту ссылку для подробного образца

0 голосов
/ 01 сентября 2010

Вы можете попытаться разместить атрибут NonSerializedAttribute в свойствах, не уверенный, работает ли он с сериализатором Json ...

Редактировать: если вы используете .net 4.0, вы можете попробовать использовать интерфейс ISerializable..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...