Согласно этой статье Silverlight 2 Бета 2 поддерживает объект DataContractJsonSerializer. Но когда я пытаюсь его использовать, VS говорит
"Type 'DataContractJsonSerializer' is not defined".
У меня есть метод, помеченный как ScriptableMember, который вызывается из JavaScript и передается объект. Внутри этого метода мне нужно сериализовать объект в строку (желательно JSON), а затем сохранить его в изолированном хранилище.
Действительно ли Silverlight 2 Beta 2 поддерживает DataContractJsonSerializer? Или кто-нибудь порекомендовал бы другой метод сохранения созданного JavaScript ScriptObject в изолированном хранилище?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


На данный момент единственное решение, которое я нашел, - это использовать ASP.NET AJAX JavaScriptSerializer для сериализации / десериализации JSON в JavaScript, а затем просто использовать Silverlight для сохранения / извлечения результирующей строки.
Sys.Serialization.JavaScriptSerializer.serialize(obj);
Sys.Serialization.JavaScriptSerializer.deserialize(json);
Я бы сказал, что ваш собственный ответ будет лучшим подходом. JavaScript очень медленно справляется с подобными вещами, поэтому лучше оставить часть сериализации ASP.NET.
Я говорю обо всем коде на стороне клиента. Я имею в виду ASP.NET AJAX JavaScriptSerializer, основанный на JavaScript и являющийся частью клиентских скриптов ASP.NET AJAX.
На самом деле ответ таков: DataContractJsonSerializer является частью Silverlight 2 Beta 2, но вам нужно добавить ссылку на System.ServiceModel.Web в свой проект Silverlight, чтобы использовать его.
Я не понимал, что вам все еще нужно добавлять ссылки на dll в Silverlight. Я думал, что он автоматически включает все, так же, как это делает ASP.NET.
Существует версия Json.NET для Silverlight, которая сериализует ваши объекты в JSON. Он не требует атрибутов [DataContract] и [DataMember] во всех ваших объектах.
Эм ... Извините за то, что нашел ответ в другом месте после того, как задал вопрос.