Question

Selon cet article, Silverlight 2 Bêta 2 prend en charge l'objet DataContractJsonSerializer . Mais, quand j'essaie de l'utiliser, VS dit

  

"Le type 'DataContractJsonSerializer' n'est pas défini".

J'ai une méthode marquée ScriptableMember qui est appelée à partir de JavaScript et qui reçoit un objet. Dans cette méthode, je dois sérialiser l'objet en chaîne (de préférence en JSON), puis l'enregistrer dans un stockage isolé.

Silverlight 2 Beta 2 prend-il réellement en charge DataContractJsonSerializer? Ou est-ce que quelqu'un recommanderait une méthode différente pour enregistrer l'objet ScriptObject créé par JavaScript dans le stockage isolé?

Était-ce utile?

La solution

En réalité, la réponse est que DataContractJsonSerializer fait partie de Silverlight 2 Beta 2, mais vous devez ajouter une référence à System.ServiceModel.Web à votre projet Silverlight pour pouvoir l'utiliser.

Je n’avais pas réalisé que vous deviez encore ajouter des références DLL à Silverlight. Je pensais que tout était automatiquement inclus de la même manière que ASP.NET.

Autres conseils

Il existe une version Silverlight de Json.NET qui sérialisera vos objets en JSON. Il ne nécessite pas d'attributs [DataContract] et [DataMember] sur tous vos objets.

Json.NET

Pour l'instant, la seule solution à ce problème que j'ai trouvée consiste à utiliser le sérialiseur ASP.NET AJAX JavaScript pour effectuer la sérialisation / désérialisation JSON en JavaScript, puis d'utiliser simplement Silverlight pour stocker / récupérer la chaîne résultante.

Sys.Serialization.JavaScriptSerializer.serialize(obj);
Sys.Serialization.JavaScriptSerializer.deserialize(json);

Je dirais que votre propre réponse serait la meilleure approche. JavaScript est très lent à faire des choses comme ça, alors mieux vaut laisser la partie sérialisation à ASP.NET.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top